]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Improved KMetaData integration. The Dolphin info sidebar now uses KMetaData to allow...
[dolphin.git] / src / dolphinmainwindow.cpp
index 508f010ce890b2a1b65cb896ec7a4b6d2328785d..a2bb16b8ab8f3206b3bc7667788a56bd57b5b318 100644 (file)
@@ -22,8 +22,6 @@
 #include <config-kmetadata.h>\r
 #include "dolphinmainwindow.h"\r
 \r
-#include <assert.h>\r
-\r
 #include "bookmarkssidebarpage.h"\r
 #include "dolphinapplication.h"\r
 #include "dolphinnewmenu.h"\r
@@ -31,7 +29,7 @@
 #include "dolphinsettingsdialog.h"\r
 #include "dolphinstatusbar.h"\r
 #include "infosidebarpage.h"\r
-#include "metadataloader.h"\r
+#include "metadatawidget.h"\r
 #include "mainwindowadaptor.h"\r
 #include "treeviewsidebarpage.h"\r
 #include "urlnavigator.h"\r
@@ -58,6 +56,7 @@
 #include <kmenu.h>\r
 #include <kmessagebox.h>\r
 #include <konqmimedata.h>\r
+#include <konq_operations.h>\r
 #include <kpropertiesdialog.h>\r
 #include <kprotocolinfo.h>\r
 #include <ktoggleaction.h>\r
@@ -106,7 +105,7 @@ DolphinMainWindow::~DolphinMainWindow()
 \r
 void DolphinMainWindow::setActiveView(DolphinView* view)\r
 {\r
-    assert((view == m_view[PrimaryIdx]) || (view == m_view[SecondaryIdx]));\r
+    Q_ASSERT((view == m_view[PrimaryIdx]) || (view == m_view[SecondaryIdx]));\r
     if (m_activeView == view) {\r
         return;\r
     }\r
@@ -203,6 +202,13 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls,
     }\r
 }\r
 \r
+void DolphinMainWindow::rename(const KUrl& oldUrl, const KUrl& newUrl)\r
+{\r
+    clearStatusBar();\r
+    KonqOperations::rename(this, oldUrl, newUrl);\r
+    m_undoCommandTypes.append(KonqUndoManager::RENAME);\r
+}\r
+\r
 void DolphinMainWindow::refreshViews()\r
 {\r
     const bool split = DolphinSettings::instance().generalSettings()->splitView();\r
@@ -232,7 +238,7 @@ void DolphinMainWindow::refreshViews()
     }\r
 \r
     m_activeView = isPrimaryViewActive ? m_view[PrimaryIdx] : m_view[SecondaryIdx];\r
-    assert(m_activeView != 0);\r
+    Q_ASSERT(m_activeView != 0);\r
 \r
     updateViewActions();\r
     emit activeViewChanged();\r
@@ -325,6 +331,10 @@ void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalI
     if (action != 0) {\r
         KToggleAction* toggleAction = static_cast<KToggleAction*>(action);\r
         toggleAction->setChecked(true);\r
+\r
+        QActionGroup* group = toggleAction->actionGroup();\r
+        Q_ASSERT(group != 0);\r
+        group->setEnabled(m_activeView->mode() == DolphinView::IconsView);\r
     }\r
 }\r
 \r
@@ -332,7 +342,7 @@ void DolphinMainWindow::slotSelectionChanged()
 {\r
     updateEditActions();\r
 \r
-    assert(m_view[PrimaryIdx] != 0);\r
+    Q_ASSERT(m_view[PrimaryIdx] != 0);\r
     int selectedUrlsCount = m_view[PrimaryIdx]->selectedUrls().count();\r
     if (m_view[SecondaryIdx] != 0) {\r
         selectedUrlsCount += m_view[SecondaryIdx]->selectedUrls().count();\r
@@ -440,24 +450,36 @@ void DolphinMainWindow::moveToTrash()
     clearStatusBar();\r
     const KUrl::List selectedUrls = m_activeView->selectedUrls();\r
     KonqOperations::del(this, KonqOperations::TRASH, selectedUrls);\r
-    m_undoOperations.append(KonqOperations::TRASH);\r
+    m_undoCommandTypes.append(KonqUndoManager::TRASH);\r
 }\r
 \r
 void DolphinMainWindow::deleteItems()\r
 {\r
     clearStatusBar();\r
 \r
+    // TODO: if KonqOperations::askDeleteConfirmation() would indicate when\r
+    // the operation has been finished, this method should be used.\r
+\r
     KUrl::List list = m_activeView->selectedUrls();\r
     const uint itemCount = list.count();\r
-    assert(itemCount >= 1);\r
+    Q_ASSERT(itemCount >= 1);\r
 \r
     QString text;\r
     if (itemCount > 1) {\r
-        text = i18n("Do you really want to delete the %1 selected items?",itemCount);\r
+        text = i18n("Do you really want to delete the %1 selected items?", itemCount);\r
     }\r
     else {\r
         const KUrl& url = list.first();\r
-        text = i18n("Do you really want to delete '%1'?",url.fileName());\r
+        QString itemName;\r
+        if (url.protocol() == "trash" ) {\r
+            itemName = url.path();\r
+            // TODO: check comment in konq_undo.cc in the method askDeleteConfirmation()\r
+            itemName.remove(QRegExp("^/[0-9]*-"));\r
+        }\r
+        else {\r
+           itemName = url.pathOrUrl();\r
+        }\r
+        text = i18n("Do you really want to delete '%1'?", itemName);\r
     }\r
 \r
     const bool del = KMessageBox::warningContinueCancel(this,\r
@@ -510,26 +532,36 @@ void DolphinMainWindow::slotUndoAvailable(bool available)
         undoAction->setEnabled(available);\r
     }\r
 \r
-    if (available && (m_undoOperations.count() > 0)) {\r
-        const KonqOperations::Operation op = m_undoOperations.takeFirst();\r
+    if (available && (m_undoCommandTypes.count() > 0)) {\r
+        const KonqUndoManager::CommandType command = m_undoCommandTypes.takeFirst();\r
         DolphinStatusBar* statusBar = m_activeView->statusBar();\r
-        switch (op) {\r
-            case KonqOperations::COPY:\r
+        switch (command) {\r
+            case KonqUndoManager::COPY:\r
                 statusBar->setMessage(i18n("Copy operation completed."),\r
                                       DolphinStatusBar::OperationCompleted);\r
                 break;\r
-            case KonqOperations::MOVE:\r
+            case KonqUndoManager::MOVE:\r
                 statusBar->setMessage(i18n("Move operation completed."),\r
                                       DolphinStatusBar::OperationCompleted);\r
                 break;\r
-            case KonqOperations::LINK:\r
+            case KonqUndoManager::LINK:\r
                 statusBar->setMessage(i18n("Link operation completed."),\r
                                       DolphinStatusBar::OperationCompleted);\r
                 break;\r
-            case KonqOperations::TRASH:\r
+            case KonqUndoManager::TRASH:\r
                 statusBar->setMessage(i18n("Move to trash operation completed."),\r
                                       DolphinStatusBar::OperationCompleted);\r
                 break;\r
+            case KonqUndoManager::RENAME:\r
+                statusBar->setMessage(i18n("Renaming operation completed."),\r
+                                      DolphinStatusBar::OperationCompleted);\r
+                break;\r
+\r
+            case KonqUndoManager::MKDIR:\r
+                statusBar->setMessage(i18n("Created directory."),\r
+                                      DolphinStatusBar::OperationCompleted);\r
+                break;\r
+\r
             default:\r
                 break;\r
         }\r
@@ -908,7 +940,7 @@ void DolphinMainWindow::compareFiles()
     // - both in the secondary view\r
     // - one in the primary view and the other in the secondary\r
     //   view\r
-    assert(m_view[PrimaryIdx] != 0);\r
+    Q_ASSERT(m_view[PrimaryIdx] != 0);\r
 \r
     KUrl urlA;\r
     KUrl urlB;\r
@@ -916,9 +948,9 @@ void DolphinMainWindow::compareFiles()
 \r
     switch (urls.count()) {\r
         case 0: {\r
-            assert(m_view[SecondaryIdx] != 0);\r
+            Q_ASSERT(m_view[SecondaryIdx] != 0);\r
             urls = m_view[SecondaryIdx]->selectedUrls();\r
-            assert(urls.count() == 2);\r
+            Q_ASSERT(urls.count() == 2);\r
             urlA = urls[0];\r
             urlB = urls[1];\r
             break;\r
@@ -926,9 +958,9 @@ void DolphinMainWindow::compareFiles()
 \r
         case 1: {\r
             urlA = urls[0];\r
-            assert(m_view[SecondaryIdx] != 0);\r
+            Q_ASSERT(m_view[SecondaryIdx] != 0);\r
             urls = m_view[SecondaryIdx]->selectedUrls();\r
-            assert(urls.count() == 1);\r
+            Q_ASSERT(urls.count() == 1);\r
             urlB = urls[0];\r
             break;\r
         }\r
@@ -942,7 +974,7 @@ void DolphinMainWindow::compareFiles()
         default: {\r
             // may not happen: compareFiles may only get invoked if 2\r
             // files are selected\r
-            assert(false);\r
+            Q_ASSERT(false);\r
         }\r
     }\r
 \r
@@ -979,7 +1011,7 @@ void DolphinMainWindow::init()
     DolphinSettings& settings = DolphinSettings::instance();\r
 \r
     KBookmarkManager* manager = settings.bookmarkManager();\r
-    assert(manager != 0);\r
+    Q_ASSERT(manager != 0);\r
     KBookmarkGroup root = manager->root();\r
     if (root.first().isNull()) {\r
         root.addBookmark(manager, i18n("Home"), settings.generalSettings()->homeUrl(), "folder-home");\r
@@ -1026,7 +1058,7 @@ void DolphinMainWindow::init()
         resize(640, 480);\r
     }\r
     #ifdef HAVE_KMETADATA\r
-    if (!DolphinApplication::app()->metadataLoader()->storageUp())\r
+    if ( !MetaDataWidget::metaDataAvailable() )\r
         activeView()->statusBar()->setMessage(i18n("Failed to contact Nepomuk service, annotation and tagging are disabled."), DolphinStatusBar::Error);\r
     #endif\r
 }\r
@@ -1180,7 +1212,7 @@ void DolphinMainWindow::setupActions()
     connect(clearInfo, SIGNAL(triggered()), this, SLOT(clearInfo()));\r
 \r
     KToggleAction* showMimeInfo = actionCollection()->add<KToggleAction>("show_mime_info");\r
-    showMimeInfo->setText(i18n("MIME Type"));\r
+    showMimeInfo->setText(i18n("Type"));\r
     connect(showMimeInfo, SIGNAL(triggered()), this, SLOT(showMimeInfo()));\r
 \r
     KToggleAction* showSizeInfo = actionCollection()->add<KToggleAction>("show_size_info");\r
@@ -1433,19 +1465,19 @@ void DolphinMainWindow::updateGoActions()
 void DolphinMainWindow::copyUrls(const KUrl::List& source, const KUrl& dest)\r
 {\r
     KonqOperations::copy(this, KonqOperations::COPY, source, dest);\r
-    m_undoOperations.append(KonqOperations::COPY);\r
+    m_undoCommandTypes.append(KonqUndoManager::COPY);\r
 }\r
 \r
 void DolphinMainWindow::moveUrls(const KUrl::List& source, const KUrl& dest)\r
 {\r
     KonqOperations::copy(this, KonqOperations::MOVE, source, dest);\r
-    m_undoOperations.append(KonqOperations::MOVE);\r
+    m_undoCommandTypes.append(KonqUndoManager::MOVE);\r
 }\r
 \r
 void DolphinMainWindow::linkUrls(const KUrl::List& source, const KUrl& dest)\r
 {\r
     KonqOperations::copy(this, KonqOperations::LINK, source, dest);\r
-    m_undoOperations.append(KonqOperations::LINK);\r
+    m_undoCommandTypes.append(KonqUndoManager::LINK);\r
 }\r
 \r
 void DolphinMainWindow::clearStatusBar()\r
@@ -1485,7 +1517,7 @@ DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin)
     KonqUndoManager::UiInterface(mainWin),\r
     m_mainWin(mainWin)\r
 {\r
-    assert(m_mainWin != 0);\r
+    Q_ASSERT(m_mainWin != 0);\r
 }\r
 \r
 DolphinMainWindow::UndoUiInterface::~UndoUiInterface()\r