X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e6dcf5e8ffd8c4fe9a011aba92783d6ad1a7a63c..a8a050952df82d8f9cc1191f410fca7c6a219da3:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index f144109cb..16caae9d6 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -18,14 +18,15 @@ */ #include "dolphinpart.h" -#include -#include +#include "dolphinviewactionhandler.h" #include "dolphinsortfilterproxymodel.h" #include "dolphinview.h" #include "dolphinmodel.h" #include +#include +#include #include #include #include @@ -92,25 +93,20 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi connect(m_view, SIGNAL(urlChanged(KUrl)), this, SLOT(slotUrlChanged(KUrl))); connect(m_view, SIGNAL(modeChanged()), - this, SLOT(updateViewActions())); - connect(m_view, SIGNAL(sortOrderChanged(Qt::SortOrder)), - this, SLOT(slotSortOrderChanged(Qt::SortOrder))); - connect(m_view, SIGNAL(additionalInfoChanged()), - this, SLOT(slotAdditionalInfoChanged())); + this, SIGNAL(viewModeChanged())); // relay signal + + m_actionHandler = new DolphinViewActionHandler(actionCollection(), this); + m_actionHandler->setCurrentView(m_view); QClipboard* clipboard = QApplication::clipboard(); connect(clipboard, SIGNAL(dataChanged()), this, SLOT(updatePasteAction())); createActions(); - updateViewActions(); + m_actionHandler->updateViewActions(); slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions - // TODO provide the viewmode actions in the menu, merged with the existing view-mode-actions somehow - // [Q_PROPERTY introspection?] - // TODO sort_by_* actions - // TODO show_*_info actions // TODO there was a "always open a new window" (when clicking on a directory) setting in konqueror // (sort of spacial navigation) @@ -123,22 +119,6 @@ DolphinPart::~DolphinPart() void DolphinPart::createActions() { - QActionGroup* viewModeActions = new QActionGroup(this); - viewModeActions->addAction(DolphinView::iconsModeAction(actionCollection())); - viewModeActions->addAction(DolphinView::detailsModeAction(actionCollection())); - viewModeActions->addAction(DolphinView::columnsModeAction(actionCollection())); - connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*))); - - KAction* renameAction = DolphinView::createRenameAction(actionCollection()); - connect(renameAction, SIGNAL(triggered()), m_view, SLOT(renameSelectedItems())); - - KAction* moveToTrashAction = DolphinView::createMoveToTrashAction(actionCollection()); - connect(moveToTrashAction, SIGNAL(triggered(Qt::MouseButtons, Qt::KeyboardModifiers)), - this, SLOT(slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers))); - - KAction* deleteAction = DolphinView::createDeleteAction(actionCollection()); - connect(deleteAction, SIGNAL(triggered()), m_view, SLOT(deleteSelectedItems())); - KAction *editMimeTypeAction = actionCollection()->addAction( "editMimeType" ); editMimeTypeAction->setText( i18nc("@action:inmenu Edit", "&Edit File Type..." ) ); connect(editMimeTypeAction, SIGNAL(triggered()), SLOT(slotEditMimeType())); @@ -148,21 +128,10 @@ void DolphinPart::createActions() propertiesAction->setShortcut(Qt::ALT+Qt::Key_Return); connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties())); - // View menu - - // TODO sort_by_* - - KAction* sortDescending = DolphinView::createSortDescendingAction(actionCollection()); - connect(sortDescending, SIGNAL(triggered()), m_view, SLOT(toggleSortOrder())); - - QActionGroup* showInformationActionGroup = DolphinView::createAdditionalInformationActionGroup(actionCollection()); - connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), m_view, SLOT(toggleAdditionalInfo(QAction*))); + // View menu: all done by DolphinViewActionHandler // Go menu - KAction* newDirAction = DolphinView::createNewDirAction(actionCollection()); - connect(newDirAction, SIGNAL(triggered()), SLOT(createDir())); - QActionGroup* goActionGroup = new QActionGroup(this); connect(goActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotGoTriggered(QAction*))); @@ -231,15 +200,6 @@ void DolphinPart::updatePasteAction() emit m_extension->setActionText( "paste", pasteInfo.second ); } -void DolphinPart::updateViewActions() -{ - QAction* action = actionCollection()->action(m_view->currentViewModeActionName()); - if (action != 0) { - KToggleAction* toggleAction = static_cast(action); - toggleAction->setChecked(true); - } -} - KAboutData* DolphinPart::createAboutData() { return new KAboutData("dolphinpart", "dolphin", ki18nc("@title", "Dolphin Part"), "0.1"); @@ -377,12 +337,6 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&) } } -void DolphinPart::slotViewModeActionTriggered(QAction* action) -{ - const DolphinView::Mode mode = action->data().value(); - m_view->setMode(mode); -} - void DolphinPart::slotUrlChanged(const KUrl& url) { if (m_view->url() != url) { @@ -412,17 +366,6 @@ void DolphinPartBrowserExtension::paste() //// -void DolphinPart::slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers modifiers) -{ - // Note: kde3's konq_mainwindow.cpp used to check - // reason == KAction::PopupMenuActivation && ... - // but this isn't supported anymore - if (modifiers & Qt::ShiftModifier) - m_view->deleteSelectedItems(); - else - m_view->trashSelectedItems(); -} - void DolphinPart::slotEditMimeType() { const KFileItemList items = m_view->selectedItems(); @@ -440,21 +383,16 @@ void DolphinPart::slotProperties() } } -void DolphinPart::createDir() -{ - KonqOperations::newDir(m_view, url()); -} - -void DolphinPart::slotSortOrderChanged(Qt::SortOrder order) +void DolphinPart::setCurrentViewMode(const QString& viewModeName) { - KToggleAction* descending = static_cast(actionCollection()->action("descending")); - const bool sortDescending = (order == Qt::DescendingOrder); - descending->setChecked(sortDescending); + QAction* action = actionCollection()->action(viewModeName); + Q_ASSERT(action); + action->trigger(); } -void DolphinPart::slotAdditionalInfoChanged() +QString DolphinPart::currentViewMode() const { - m_view->updateAdditionalInfoActions(actionCollection()); + return m_actionHandler->currentViewModeActionName(); } #include "dolphinpart.moc"