]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Additionally to sorting by name, size and date it is now possible to sort by permissi...
[dolphin.git] / src / dolphinmainwindow.cpp
index 203a85b384286e05e57dd184655a5c5e33a677a1..262bc8558f9f8891a0fa33d5f92d8b3ef47d8a5e 100644 (file)
@@ -24,6 +24,7 @@
 #include <assert.h>\r
 \r
 #include "dolphinapplication.h"\r
+#include "dolphinnewmenu.h"\r
 #include "dolphinsettings.h"\r
 #include "dolphinsettingsdialog.h"\r
 #include "dolphinstatusbar.h"\r
 #include <kicon.h>\r
 #include <kiconloader.h>\r
 #include <kio/netaccess.h>\r
+#include <kio/deletejob.h>\r
 #include <kio/renamedialog.h>\r
 #include <kinputdialog.h>\r
 #include <klocale.h>\r
 #include <kmenu.h>\r
 #include <kmessagebox.h>\r
-#include <knewmenu.h>\r
 #include <konqmimedata.h>\r
 #include <kpropertiesdialog.h>\r
 #include <kprotocolinfo.h>\r
@@ -160,7 +161,7 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls,
                                               i18n("&Link Here") + "\t" + seq);\r
 \r
         popup.addSeparator();\r
-        popup.addAction(KIcon("stop"), i18n("Cancel"));\r
+        QAction* cancelAction = popup.addAction(KIcon("stop"), i18n("Cancel"));\r
 \r
         QAction* activatedAction = popup.exec(QCursor::pos());\r
         if (activatedAction == moveAction) {\r
@@ -172,6 +173,9 @@ void DolphinMainWindow::dropUrls(const KUrl::List& urls,
         else if (activatedAction == linkAction) {\r
             action = Qt::LinkAction;\r
         }\r
+        else if (activatedAction == cancelAction) {\r
+            return;\r
+        }\r
     }\r
 \r
     switch (action) {\r
@@ -252,6 +256,15 @@ void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting)
         case DolphinView::SortByDate:\r
             action = actionCollection()->action("by_date");\r
             break;\r
+        case DolphinView::SortByPermissions:\r
+            action = actionCollection()->action("by_permissions");\r
+            break;\r
+        case DolphinView::SortByOwner:\r
+            action = actionCollection()->action("by_owner");\r
+            break;\r
+        case DolphinView::SortByGroup:\r
+            action = actionCollection()->action("by_group");\r
+            break;\r
         default:\r
             break;\r
     }\r
@@ -321,7 +334,7 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event)
 \r
     // TODO: I assume there will be a generic way in KDE 4 to store the docks\r
     // of the main window. In the meantime they are stored manually:\r
-    QString filename = KStandardDirs::locateLocal("data", KGlobal::instance()->instanceName());\r
+    QString filename = KStandardDirs::locateLocal("data", KGlobal::mainComponent().componentName());\r
     filename.append("/panels_layout");\r
     QFile file(filename);\r
     if (file.open(QIODevice::WriteOnly)) {\r
@@ -485,6 +498,12 @@ void DolphinMainWindow::slotUndoTextChanged(const QString& text)
     }\r
 }\r
 \r
+void DolphinMainWindow::undo()\r
+{\r
+    clearStatusBar();\r
+    KonqUndoManager::self()->undo();\r
+}\r
+\r
 void DolphinMainWindow::cut()\r
 {\r
     QMimeData* mimeData = new QMimeData();\r
@@ -625,6 +644,21 @@ void DolphinMainWindow::sortByDate()
     m_activeView->setSorting(DolphinView::SortByDate);\r
 }\r
 \r
+void DolphinMainWindow::sortByPermissions()\r
+{\r
+    m_activeView->setSorting(DolphinView::SortByPermissions);\r
+}\r
+\r
+void DolphinMainWindow::sortByOwner()\r
+{\r
+    m_activeView->setSorting(DolphinView::SortByOwner);\r
+}\r
+\r
+void DolphinMainWindow::sortByGroup()\r
+{\r
+    m_activeView->setSorting(DolphinView::SortByGroup);\r
+}\r
+\r
 void DolphinMainWindow::toggleSortOrder()\r
 {\r
     const Qt::SortOrder order = (m_activeView->sortOrder() == Qt::Ascending) ?\r
@@ -921,8 +955,7 @@ void DolphinMainWindow::loadSettings()
     // TODO: I assume there will be a generic way in KDE 4 to restore the docks\r
     // of the main window. In the meantime they are restored manually (see also\r
     // DolphinMainWindow::closeEvent() for more details):\r
-    QString filename = KStandardDirs::locateLocal("data", KGlobal::instance()->instanceName());\r
-    filename.append("/panels_layout");\r
+    QString filename = KStandardDirs::locateLocal("data", KGlobal::mainComponent().componentName());   filename.append("/panels_layout");\r
     QFile file(filename);\r
     if (file.open(QIODevice::ReadOnly)) {\r
         QByteArray data = file.readAll();\r
@@ -934,7 +967,7 @@ void DolphinMainWindow::loadSettings()
 void DolphinMainWindow::setupActions()\r
 {\r
     // setup 'File' menu\r
-    m_newMenu = new KNewMenu(actionCollection(), this, "create_new");\r
+    m_newMenu = new DolphinNewMenu(this);\r
     KMenu* menu = m_newMenu->menu();\r
     menu->setTitle(i18n("Create New..."));\r
     menu->setIcon(SmallIcon("filenew"));\r
@@ -971,7 +1004,7 @@ void DolphinMainWindow::setupActions()
     KStandardAction::quit(this, SLOT(quit()), actionCollection());\r
 \r
     // setup 'Edit' menu\r
-    KStandardAction::undo(KonqUndoManager::self(),\r
+    KStandardAction::undo(this,\r
                           SLOT(undo()),\r
                           actionCollection());\r
 \r
@@ -1026,10 +1059,25 @@ void DolphinMainWindow::setupActions()
     sortByDate->setText(i18n("By Date"));\r
     connect(sortByDate, SIGNAL(triggered()), this, SLOT(sortByDate()));\r
 \r
+    KToggleAction* sortByPermissions = actionCollection()->add<KToggleAction>("by_permissions");\r
+    sortByPermissions->setText(i18n("By Permissions"));\r
+    connect(sortByPermissions, SIGNAL(triggered()), this, SLOT(sortByPermissions()));\r
+\r
+    KToggleAction* sortByOwner = actionCollection()->add<KToggleAction>("by_owner");\r
+    sortByOwner->setText(i18n("By Owner"));\r
+    connect(sortByOwner, SIGNAL(triggered()), this, SLOT(sortByOwner()));\r
+\r
+    KToggleAction* sortByGroup = actionCollection()->add<KToggleAction>("by_group");\r
+    sortByGroup->setText(i18n("By Group"));\r
+    connect(sortByGroup, SIGNAL(triggered()), this, SLOT(sortByGroup()));\r
+\r
     QActionGroup* sortGroup = new QActionGroup(this);\r
     sortGroup->addAction(sortByName);\r
     sortGroup->addAction(sortBySize);\r
     sortGroup->addAction(sortByDate);\r
+    sortGroup->addAction(sortByPermissions);\r
+    sortGroup->addAction(sortByOwner);\r
+    sortGroup->addAction(sortByGroup);\r
 \r
     KToggleAction* sortDescending = actionCollection()->add<KToggleAction>("descending");\r
     sortDescending->setText(i18n("Descending"));\r
@@ -1281,6 +1329,7 @@ void DolphinMainWindow::connectViewSignals(int viewIndex)
 }\r
 \r
 DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) :\r
+    KonqUndoManager::UiInterface(mainWin),\r
     m_mainWin(mainWin)\r
 {\r
     assert(m_mainWin != 0);\r
@@ -1296,25 +1345,4 @@ void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* job)
     statusBar->setMessage(job->errorString(), DolphinStatusBar::Error);\r
 }\r
 \r
-bool DolphinMainWindow::UndoUiInterface::copiedFileWasModified(const KUrl& src,\r
-                                                               const KUrl& dest,\r
-                                                               time_t /*srcTime*/,\r
-                                                               time_t destTime)\r
-{\r
-    // The following code has been taken from libkonq/konq_undo.cc\r
-    // Copyright (C) 2000 Simon Hausmann <hausmann@kde.org>\r
-    // Copyright (C) 2006 David Faure <faure@kde.org>\r
-    const QDateTime destDt = QDateTime::fromTime_t(destTime);\r
-    const QString timeStr = KGlobal::locale()->formatDateTime(destDt, true /* short */);\r
-    return KMessageBox::warningContinueCancel(\r
-        m_mainWin,\r
-        i18n( "The file %1 was copied from %2, but since then it has apparently been modified at %3.\n"\r
-              "Undoing the copy will delete the file, and all modifications will be lost.\n"\r
-              "Are you sure you want to delete %4?", dest.pathOrUrl(), src.pathOrUrl(), timeStr, dest.pathOrUrl()),\r
-        i18n( "Undo File Copy Confirmation" ),\r
-        KStandardGuiItem::cont(),\r
-        QString(),\r
-        KMessageBox::Notify | KMessageBox::Dangerous ) == KMessageBox::Continue;\r
-}\r
-\r
 #include "dolphinmainwindow.moc"\r