Improve naming consistency and leave mode on Escape

This commit is contained in:
Felix Ernst 2022-04-28 22:55:28 +02:00
parent 78cffd2979
commit 2e588733c7
17 changed files with 71 additions and 48 deletions

View file

@ -167,7 +167,7 @@ DolphinMainWindow::DolphinMainWindow() :
m_actionHandler = new DolphinViewActionHandler(actionCollection(), m_actionTextHelper, this); m_actionHandler = new DolphinViewActionHandler(actionCollection(), m_actionTextHelper, this);
connect(m_actionHandler, &DolphinViewActionHandler::actionBeingHandled, this, &DolphinMainWindow::clearStatusBar); connect(m_actionHandler, &DolphinViewActionHandler::actionBeingHandled, this, &DolphinMainWindow::clearStatusBar);
connect(m_actionHandler, &DolphinViewActionHandler::createDirectoryTriggered, this, &DolphinMainWindow::createDirectory); connect(m_actionHandler, &DolphinViewActionHandler::createDirectoryTriggered, this, &DolphinMainWindow::createDirectory);
connect(m_actionHandler, &DolphinViewActionHandler::setSelectionMode, this, &DolphinMainWindow::slotSetSelectionMode); connect(m_actionHandler, &DolphinViewActionHandler::selectionModeChangeTriggered, this, &DolphinMainWindow::slotSetSelectionMode);
m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler); m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler);
connect(this, &DolphinMainWindow::urlChanged, connect(this, &DolphinMainWindow::urlChanged,

View file

@ -376,7 +376,7 @@ void DolphinViewContainer::disconnectUrlNavigator()
void DolphinViewContainer::setSelectionModeEnabled(bool enabled, KActionCollection *actionCollection, SelectionMode::BottomBar::Contents bottomBarContents) void DolphinViewContainer::setSelectionModeEnabled(bool enabled, KActionCollection *actionCollection, SelectionMode::BottomBar::Contents bottomBarContents)
{ {
const bool wasEnabled = m_view->selectionMode(); const bool wasEnabled = m_view->selectionMode();
m_view->setSelectionMode(enabled); m_view->setSelectionModeEnabled(enabled);
if (!enabled) { if (!enabled) {
Q_CHECK_PTR(m_selectionModeTopBar); // there is no point in disabling selectionMode when it wasn't even enabled once. Q_CHECK_PTR(m_selectionModeTopBar); // there is no point in disabling selectionMode when it wasn't even enabled once.
@ -396,7 +396,7 @@ void DolphinViewContainer::setSelectionModeEnabled(bool enabled, KActionCollecti
}); });
m_selectionModeTopBar = new SelectionMode::TopBar(this); // will be created hidden m_selectionModeTopBar = new SelectionMode::TopBar(this); // will be created hidden
connect(m_selectionModeTopBar, &SelectionMode::TopBar::leaveSelectionModeRequested, this, [this]() { connect(m_selectionModeTopBar, &SelectionMode::TopBar::selectionModeLeavingRequested, this, [this]() {
setSelectionModeEnabled(false); setSelectionModeEnabled(false);
}); });
m_topLayout->addWidget(m_selectionModeTopBar, positionFor.selectionModeTopBar, 0); m_topLayout->addWidget(m_selectionModeTopBar, positionFor.selectionModeTopBar, 0);
@ -410,7 +410,7 @@ void DolphinViewContainer::setSelectionModeEnabled(bool enabled, KActionCollecti
connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::error, this, [this](const QString &errorMessage) { connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::error, this, [this](const QString &errorMessage) {
showErrorMessage(errorMessage); showErrorMessage(errorMessage);
}); });
connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::leaveSelectionModeRequested, this, [this]() { connect(m_selectionModeBottomBar, &SelectionMode::BottomBar::selectionModeLeavingRequested, this, [this]() {
setSelectionModeEnabled(false); setSelectionModeEnabled(false);
}); });
m_topLayout->addWidget(m_selectionModeBottomBar, positionFor.selectionModeBottomBar, 0); m_topLayout->addWidget(m_selectionModeBottomBar, positionFor.selectionModeBottomBar, 0);

View file

@ -137,7 +137,20 @@ public:
*/ */
void disconnectUrlNavigator(); void disconnectUrlNavigator();
/**
* Sets a selection mode that is useful for quick and easy selecting or deselecting of files.
* This method is the central authority about enabling or disabling selection mode:
* All other classes that want to enable or disable selection mode should trigger a call of this method.
*
* This method sets the selection mode for the view of this viewContainer and sets the visibility of the
* selection mode top and bottom bar which also belong to this viewContainer.
*
* @param enabled Whether to enable or disable selection mode.
* @param actionCollection The collection of actions from which the actions on the bottom bar are retrieved.
* @param bottomBarContents The contents the bar is supposed to show after this call.
*/
void setSelectionModeEnabled(bool enabled, KActionCollection *actionCollection = nullptr, SelectionMode::BottomBar::Contents bottomBarContents = SelectionMode::BottomBar::Contents::GeneralContents); void setSelectionModeEnabled(bool enabled, KActionCollection *actionCollection = nullptr, SelectionMode::BottomBar::Contents bottomBarContents = SelectionMode::BottomBar::Contents::GeneralContents);
/** @see setSelectionModeEnabled() */
bool isSelectionModeEnabled() const; bool isSelectionModeEnabled() const;
/** /**

View file

@ -77,7 +77,7 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
m_longPressDetectionTimer->setInterval(QGuiApplication::styleHints()->mousePressAndHoldInterval()); m_longPressDetectionTimer->setInterval(QGuiApplication::styleHints()->mousePressAndHoldInterval());
connect(m_longPressDetectionTimer, &QTimer::timeout, this, [this]() { connect(m_longPressDetectionTimer, &QTimer::timeout, this, [this]() {
if (!m_selectionMode) { if (!m_selectionMode) {
Q_EMIT selectionModeRequested(); Q_EMIT selectionModeChangeRequested(true);
} }
}); });
@ -232,7 +232,7 @@ bool KItemListController::singleClickActivationEnforced() const
return m_singleClickActivationEnforced; return m_singleClickActivationEnforced;
} }
void KItemListController::setSelectionMode(bool enabled) void KItemListController::setSelectionModeEnabled(bool enabled)
{ {
m_selectionMode = enabled; m_selectionMode = enabled;
} }
@ -430,6 +430,9 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
} }
case Qt::Key_Escape: case Qt::Key_Escape:
if (m_selectionMode && m_selectionManager->selectedItems().count() < 1) {
Q_EMIT selectionModeChangeRequested(false);
}
if (m_selectionBehavior != SingleSelection) { if (m_selectionBehavior != SingleSelection) {
m_selectionManager->clearSelection(); m_selectionManager->clearSelection();
} }

View file

@ -126,7 +126,11 @@ public:
void setSingleClickActivationEnforced(bool singleClick); void setSingleClickActivationEnforced(bool singleClick);
bool singleClickActivationEnforced() const; bool singleClickActivationEnforced() const;
void setSelectionMode(bool enabled); /**
* Setting the selection mode to enabled will make selecting and deselecting easier by acting
* kind of similar to when the Control Key is held down.
*/
void setSelectionModeEnabled(bool enabled);
bool selectionMode() const; bool selectionMode() const;
bool processEvent(QEvent* event, const QTransform& transform); bool processEvent(QEvent* event, const QTransform& transform);
@ -213,12 +217,15 @@ Q_SIGNALS:
void escapePressed(); void escapePressed();
/** /**
* Is emitted if left click is pressed down for a long time without moving the cursor too much. * Used to request either entering or leaving of selection mode
* Leaving is requested by pressing Escape when no item is selected.
*
* Entering is requested if left click is pressed down for a long time without moving the cursor too much.
* Moving the cursor would either trigger an item drag if the click was initiated on top of an item * Moving the cursor would either trigger an item drag if the click was initiated on top of an item
* or a selection rectangle if the click was not initiated on top of an item. * or a selection rectangle if the click was not initiated on top of an item.
* So long press is only emitted if there wasn't a lot of cursor movement. * So long press is only emitted if there wasn't a lot of cursor movement.
*/ */
void selectionModeRequested(); void selectionModeChangeRequested(bool enabled);
void modelChanged(KItemModelBase* current, KItemModelBase* previous); void modelChanged(KItemModelBase* current, KItemModelBase* previous);
void viewChanged(KItemListView* current, KItemListView* previous); void viewChanged(KItemListView* current, KItemListView* previous);

View file

@ -52,7 +52,7 @@ BottomBar::BottomBar(KActionCollection *actionCollection, QWidget *parent) :
} }
setVisibleInternal(visible, WithAnimation); setVisibleInternal(visible, WithAnimation);
}); });
connect(m_contentsContainer, &BottomBarContentsContainer::leaveSelectionModeRequested, this, &BottomBar::leaveSelectionModeRequested); connect(m_contentsContainer, &BottomBarContentsContainer::selectionModeLeavingRequested, this, &BottomBar::selectionModeLeavingRequested);
BackgroundColorHelper::instance()->controlBackgroundColor(this); BackgroundColorHelper::instance()->controlBackgroundColor(this);
} }
@ -114,7 +114,7 @@ void BottomBar::slotSplitTabDisabled()
switch (contents()) { switch (contents()) {
case CopyToOtherViewContents: case CopyToOtherViewContents:
case MoveToOtherViewContents: case MoveToOtherViewContents:
Q_EMIT leaveSelectionModeRequested(); Q_EMIT selectionModeLeavingRequested();
default: default:
return; return;
} }

View file

@ -100,7 +100,7 @@ Q_SIGNALS:
*/ */
void error(const QString &errorMessage); void error(const QString &errorMessage);
void leaveSelectionModeRequested(); void selectionModeLeavingRequested();
protected: protected:
/** Is installed on an internal widget to make sure that the height of the bar is adjusted to its contents. */ /** Is installed on an internal widget to make sure that the height of the bar is adjusted to its contents. */

View file

@ -158,7 +158,7 @@ void BottomBarContentsContainer::addCopyContents()
// i18n: Aborts the current step-by-step process to copy files by leaving the selection mode. // i18n: Aborts the current step-by-step process to copy files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Copying"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Copying"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *copyButton = new QPushButton(this); auto *copyButton = new QPushButton(this);
@ -176,7 +176,7 @@ void BottomBarContentsContainer::addCopyContents()
resetContents(BottomBar::Contents::PasteContents); // resetContents() needs to be connected last because resetContents(BottomBar::Contents::PasteContents); // resetContents() needs to be connected last because
// it instantly deletes the button and then the other slots won't be called. // it instantly deletes the button and then the other slots won't be called.
} }
Q_EMIT leaveSelectionModeRequested(); Q_EMIT selectionModeLeavingRequested();
}); });
updateMainActionButton(KFileItemList()); updateMainActionButton(KFileItemList());
m_layout->addWidget(copyButton); m_layout->addWidget(copyButton);
@ -191,7 +191,7 @@ void BottomBarContentsContainer::addCopyLocationContents()
// i18n: Aborts the current step-by-step process to copy the location of files by leaving the selection mode. // i18n: Aborts the current step-by-step process to copy the location of files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Copying"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Copying"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *copyLocationButton = new QPushButton(this); auto *copyLocationButton = new QPushButton(this);
@ -210,7 +210,7 @@ void BottomBarContentsContainer::addCopyToOtherViewContents()
// i18n: Aborts the current step-by-step process to copy the location of files by leaving the selection mode. // i18n: Aborts the current step-by-step process to copy the location of files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Copying"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Copying"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *copyToOtherViewButton = new QPushButton(this); auto *copyToOtherViewButton = new QPushButton(this);
@ -228,7 +228,7 @@ void BottomBarContentsContainer::addCutContents()
// i18n: Aborts the current step-by-step process to cut files by leaving the selection mode. // i18n: Aborts the current step-by-step process to cut files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Cutting"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Cutting"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *cutButton = new QPushButton(this); auto *cutButton = new QPushButton(this);
@ -246,7 +246,7 @@ void BottomBarContentsContainer::addCutContents()
resetContents(BottomBar::Contents::PasteContents); // resetContents() needs to be connected last because resetContents(BottomBar::Contents::PasteContents); // resetContents() needs to be connected last because
// it instantly deletes the button and then the other slots won't be called. // it instantly deletes the button and then the other slots won't be called.
} }
Q_EMIT leaveSelectionModeRequested(); Q_EMIT selectionModeLeavingRequested();
}); });
updateMainActionButton(KFileItemList()); updateMainActionButton(KFileItemList());
m_layout->addWidget(cutButton); m_layout->addWidget(cutButton);
@ -261,7 +261,7 @@ void BottomBarContentsContainer::addDeleteContents()
// i18n: Aborts the current step-by-step process to delete files by leaving the selection mode. // i18n: Aborts the current step-by-step process to delete files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *deleteButton = new QPushButton(this); auto *deleteButton = new QPushButton(this);
@ -279,7 +279,7 @@ void BottomBarContentsContainer::addDuplicateContents()
// i18n: Aborts the current step-by-step process to duplicate files by leaving the selection mode. // i18n: Aborts the current step-by-step process to duplicate files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Duplicating"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Duplicating"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *duplicateButton = new QPushButton(this); auto *duplicateButton = new QPushButton(this);
@ -349,7 +349,7 @@ void BottomBarContentsContainer::addMoveToOtherViewContents()
// i18n: Aborts the current step-by-step process to copy the location of files by leaving the selection mode. // i18n: Aborts the current step-by-step process to copy the location of files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Moving"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort Moving"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *moveToOtherViewButton = new QPushButton(this); auto *moveToOtherViewButton = new QPushButton(this);
@ -367,7 +367,7 @@ void BottomBarContentsContainer::addMoveToTrashContents()
// i18n: Aborts the current step-by-step process of moving files to the trash by leaving the selection mode. // i18n: Aborts the current step-by-step process of moving files to the trash by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Abort"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *moveToTrashButton = new QPushButton(this); auto *moveToTrashButton = new QPushButton(this);
@ -393,7 +393,7 @@ void BottomBarContentsContainer::addPasteContents()
* So we first have to claim that we have different contents before requesting to leave selection mode. */ * So we first have to claim that we have different contents before requesting to leave selection mode. */
auto actuallyLeaveSelectionMode = [this]() { auto actuallyLeaveSelectionMode = [this]() {
m_contents = BottomBar::Contents::CopyLocationContents; m_contents = BottomBar::Contents::CopyLocationContents;
Q_EMIT leaveSelectionModeRequested(); Q_EMIT selectionModeLeavingRequested();
}; };
auto *pasteButton = new QPushButton(this); auto *pasteButton = new QPushButton(this);
@ -428,7 +428,7 @@ void BottomBarContentsContainer::addRenameContents()
// i18n: Aborts the current step-by-step process to delete files by leaving the selection mode. // i18n: Aborts the current step-by-step process to delete files by leaving the selection mode.
auto *cancelButton = new QPushButton(i18nc("@action:button", "Stop Renaming"), this); auto *cancelButton = new QPushButton(i18nc("@action:button", "Stop Renaming"), this);
connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::leaveSelectionModeRequested); connect(cancelButton, &QAbstractButton::clicked, this, &BottomBarContentsContainer::selectionModeLeavingRequested);
m_layout->addWidget(cancelButton); m_layout->addWidget(cancelButton);
auto *renameButton = new QPushButton(this); auto *renameButton = new QPushButton(this);

View file

@ -78,7 +78,7 @@ Q_SIGNALS:
*/ */
void barVisibilityChangeRequested(bool visible); void barVisibilityChangeRequested(bool visible);
void leaveSelectionModeRequested(); void selectionModeLeavingRequested();
private: private:
void addCopyContents(); void addCopyContents();

View file

View file

@ -70,7 +70,7 @@ TopBar::TopBar(QWidget *parent) :
m_closeButton->setAccessibleName(m_closeButton->toolTip()); m_closeButton->setAccessibleName(m_closeButton->toolTip());
m_closeButton->setFlat(true); m_closeButton->setFlat(true);
connect(m_closeButton, &QAbstractButton::pressed, connect(m_closeButton, &QAbstractButton::pressed,
this, &TopBar::leaveSelectionModeRequested); this, &TopBar::selectionModeLeavingRequested);
QHBoxLayout *layout = new QHBoxLayout(contentsContainer); QHBoxLayout *layout = new QHBoxLayout(contentsContainer);
auto contentsMargins = layout->contentsMargins(); auto contentsMargins = layout->contentsMargins();

View file

@ -42,7 +42,7 @@ public:
void setVisible(bool visible, Animated animated); void setVisible(bool visible, Animated animated);
Q_SIGNALS: Q_SIGNALS:
void leaveSelectionModeRequested(); void selectionModeLeavingRequested();
protected: protected:
/** Calls updateLabelString() */ /** Calls updateLabelString() */

View file

@ -173,7 +173,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
connect(controller, &KItemListController::increaseZoom, this, &DolphinView::slotIncreaseZoom); connect(controller, &KItemListController::increaseZoom, this, &DolphinView::slotIncreaseZoom);
connect(controller, &KItemListController::decreaseZoom, this, &DolphinView::slotDecreaseZoom); connect(controller, &KItemListController::decreaseZoom, this, &DolphinView::slotDecreaseZoom);
connect(controller, &KItemListController::swipeUp, this, &DolphinView::slotSwipeUp); connect(controller, &KItemListController::swipeUp, this, &DolphinView::slotSwipeUp);
connect(controller, &KItemListController::selectionModeRequested, this, &DolphinView::selectionModeRequested); connect(controller, &KItemListController::selectionModeChangeRequested, this, &DolphinView::selectionModeChangeRequested);
connect(m_model, &KFileItemModel::directoryLoadingStarted, this, &DolphinView::slotDirectoryLoadingStarted); connect(m_model, &KFileItemModel::directoryLoadingStarted, this, &DolphinView::slotDirectoryLoadingStarted);
connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted); connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted);
@ -283,7 +283,7 @@ DolphinView::Mode DolphinView::viewMode() const
return m_mode; return m_mode;
} }
void DolphinView::setSelectionMode(const bool enabled) void DolphinView::setSelectionModeEnabled(const bool enabled)
{ {
if (enabled) { if (enabled) {
m_proxyStyle = std::make_unique<SelectionMode::SingleClickSelectionProxyStyle>(); m_proxyStyle = std::make_unique<SelectionMode::SingleClickSelectionProxyStyle>();
@ -293,7 +293,7 @@ void DolphinView::setSelectionMode(const bool enabled)
setStyle(QApplication::style()); setStyle(QApplication::style());
m_view->setStyle(QApplication::style()); m_view->setStyle(QApplication::style());
} }
m_container->controller()->setSelectionMode(enabled); m_container->controller()->setSelectionModeEnabled(enabled);
} }
bool DolphinView::selectionMode() const bool DolphinView::selectionMode() const

View file

@ -115,7 +115,7 @@ public:
/** /**
* Enables or disables a mode for quick and easy selection of items. * Enables or disables a mode for quick and easy selection of items.
*/ */
void setSelectionMode(bool enabled); void setSelectionModeEnabled(bool enabled);
bool selectionMode() const; bool selectionMode() const;
/** /**
@ -609,11 +609,11 @@ Q_SIGNALS:
void goForwardRequested(); void goForwardRequested();
/** /**
* Is emitted when the selection mode is requested for the current view. * Used to request either entering or leaving of selection mode
* This typically happens on press and hold. * Entering is typically requested on press and hold.
* @see KItemListController::longPress() * Leaving by pressing Escape when no item is selected.
*/ */
void selectionModeRequested(); void selectionModeChangeRequested(bool enabled);
/** /**
* Is emitted when the user wants to move the focus to another view. * Is emitted when the user wants to move the focus to another view.

View file

@ -73,8 +73,8 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view)
this, &DolphinViewActionHandler::slotZoomLevelChanged); this, &DolphinViewActionHandler::slotZoomLevelChanged);
connect(view, &DolphinView::writeStateChanged, connect(view, &DolphinView::writeStateChanged,
this, &DolphinViewActionHandler::slotWriteStateChanged); this, &DolphinViewActionHandler::slotWriteStateChanged);
connect(view, &DolphinView::selectionModeRequested, connect(view, &DolphinView::selectionModeChangeRequested,
this, [this]() { Q_EMIT setSelectionMode(true); }); this, [this](bool enabled) { Q_EMIT selectionModeChangeTriggered(enabled); });
connect(view, &DolphinView::selectionChanged, connect(view, &DolphinView::selectionChanged,
this, &DolphinViewActionHandler::slotSelectionChanged); this, &DolphinViewActionHandler::slotSelectionChanged);
slotSelectionChanged(m_currentView->selectedItems()); slotSelectionChanged(m_currentView->selectedItems());
@ -435,7 +435,7 @@ void DolphinViewActionHandler::slotViewModeActionTriggered(QAction* action)
void DolphinViewActionHandler::slotRename() void DolphinViewActionHandler::slotRename()
{ {
if (m_currentView->selectedItemsCount() == 0) { if (m_currentView->selectedItemsCount() == 0) {
Q_EMIT setSelectionMode(true, SelectionMode::BottomBar::Contents::RenameContents); Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::RenameContents);
} else { } else {
Q_EMIT actionBeingHandled(); Q_EMIT actionBeingHandled();
m_currentView->renameSelectedItems(); m_currentView->renameSelectedItems();
@ -446,22 +446,22 @@ void DolphinViewActionHandler::slotRename()
void DolphinViewActionHandler::slotTrashActivated() void DolphinViewActionHandler::slotTrashActivated()
{ {
if (m_currentView->selectedItemsCount() == 0) { if (m_currentView->selectedItemsCount() == 0) {
Q_EMIT setSelectionMode(true, SelectionMode::BottomBar::Contents::MoveToTrashContents); Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::MoveToTrashContents);
} else { } else {
Q_EMIT actionBeingHandled(); Q_EMIT actionBeingHandled();
m_currentView->trashSelectedItems(); m_currentView->trashSelectedItems();
Q_EMIT setSelectionMode(false); Q_EMIT selectionModeChangeTriggered(false);
} }
} }
void DolphinViewActionHandler::slotDeleteItems() void DolphinViewActionHandler::slotDeleteItems()
{ {
if (m_currentView->selectedItemsCount() == 0) { if (m_currentView->selectedItemsCount() == 0) {
Q_EMIT setSelectionMode(true, SelectionMode::BottomBar::Contents::DeleteContents); Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::DeleteContents);
} else { } else {
Q_EMIT actionBeingHandled(); Q_EMIT actionBeingHandled();
m_currentView->deleteSelectedItems(); m_currentView->deleteSelectedItems();
Q_EMIT setSelectionMode(false); Q_EMIT selectionModeChangeTriggered(false);
} }
} }
@ -762,11 +762,11 @@ void DolphinViewActionHandler::slotAdjustViewProperties()
void DolphinViewActionHandler::slotDuplicate() void DolphinViewActionHandler::slotDuplicate()
{ {
if (m_currentView->selectedItemsCount() == 0) { if (m_currentView->selectedItemsCount() == 0) {
Q_EMIT setSelectionMode(true, SelectionMode::BottomBar::Contents::DuplicateContents); Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::DuplicateContents);
} else { } else {
Q_EMIT actionBeingHandled(); Q_EMIT actionBeingHandled();
m_currentView->duplicateSelectedItems(); m_currentView->duplicateSelectedItems();
Q_EMIT setSelectionMode(false); Q_EMIT selectionModeChangeTriggered(false);
} }
} }
@ -790,10 +790,10 @@ void DolphinViewActionHandler::slotProperties()
void DolphinViewActionHandler::slotCopyPath() void DolphinViewActionHandler::slotCopyPath()
{ {
if (m_currentView->selectedItemsCount() == 0) { if (m_currentView->selectedItemsCount() == 0) {
Q_EMIT setSelectionMode(true, SelectionMode::BottomBar::Contents::CopyLocationContents); Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::CopyLocationContents);
} else { } else {
m_currentView->copyPathToClipboard(); m_currentView->copyPathToClipboard();
Q_EMIT setSelectionMode(false); Q_EMIT selectionModeChangeTriggered(false);
} }
} }

View file

@ -87,8 +87,8 @@ Q_SIGNALS:
*/ */
void createDirectoryTriggered(); void createDirectoryTriggered();
/** Used to request selection mode */ /** Used to request either entering or leaving of selection mode */
void setSelectionMode(bool enabled, SelectionMode::BottomBar::Contents bottomBarContents = SelectionMode::BottomBar::Contents::GeneralContents); void selectionModeChangeTriggered(bool enabled, SelectionMode::BottomBar::Contents bottomBarContents = SelectionMode::BottomBar::Contents::GeneralContents);
private Q_SLOTS: private Q_SLOTS:
/** /**