X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/74ae8478acd0da7619dd5a0f969aa3f479074413..4d81aabd1ee78c2fca61452ef3a866cfad0c88a5:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index ccff1256a..590fe336b 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -20,6 +20,7 @@ #include "kitemviews/kitemlistselectionmanager.h" #include "kitemviews/private/kitemlistroleeditor.h" #include "settings/viewmodes/viewmodesettings.h" +#include "selectionmode/singleclickselectionproxystyle.h" #include "versioncontrol/versioncontrolobserver.h" #include "viewproperties.h" #include "views/tooltips/tooltipmanager.h" @@ -39,12 +40,12 @@ #include #include #include -#include #include #include #include #include #include +#include #include #include @@ -109,7 +110,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) : m_model = new KFileItemModel(this); m_view = new DolphinItemListView(); - m_view->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle()); + m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::FollowSetting); m_view->setVisibleRoles({"text"}); applyModeToView(); @@ -171,6 +172,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) : connect(controller, &KItemListController::increaseZoom, this, &DolphinView::slotIncreaseZoom); connect(controller, &KItemListController::decreaseZoom, this, &DolphinView::slotDecreaseZoom); connect(controller, &KItemListController::swipeUp, this, &DolphinView::slotSwipeUp); + connect(controller, &KItemListController::selectionModeChangeRequested, this, &DolphinView::selectionModeChangeRequested); connect(m_model, &KFileItemModel::directoryLoadingStarted, this, &DolphinView::slotDirectoryLoadingStarted); connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted); @@ -232,6 +234,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) : DolphinView::~DolphinView() { + disconnect(m_container->controller(), &KItemListController::modelChanged, this, &DolphinView::slotModelChanged); } QUrl DolphinView::url() const @@ -261,7 +264,7 @@ bool DolphinView::isActive() const return m_active; } -void DolphinView::setMode(Mode mode) +void DolphinView::setViewMode(Mode mode) { if (mode != m_mode) { ViewProperties props(viewPropertiesUrl()); @@ -275,11 +278,31 @@ void DolphinView::setMode(Mode mode) } } -DolphinView::Mode DolphinView::mode() const +DolphinView::Mode DolphinView::viewMode() const { return m_mode; } +void DolphinView::setSelectionModeEnabled(const bool enabled) +{ + if (enabled) { + m_proxyStyle = std::make_unique(); + setStyle(m_proxyStyle.get()); + m_view->setStyle(m_proxyStyle.get()); + m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::False); + } else { + setStyle(QApplication::style()); + m_view->setStyle(QApplication::style()); + m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::FollowSetting); + } + m_container->controller()->setSelectionModeEnabled(enabled); +} + +bool DolphinView::selectionMode() const +{ + return m_container->controller()->selectionMode(); +} + void DolphinView::setPreviewsShown(bool show) { if (previewsShown() == show) { @@ -757,12 +780,14 @@ void DolphinView::cutSelectedItemsToClipboard() { QMimeData* mimeData = selectionMimeData(); KIO::setClipboardDataCut(mimeData, true); + KUrlMimeData::exportUrlsToPortal(mimeData); QApplication::clipboard()->setMimeData(mimeData); } void DolphinView::copySelectedItemsToClipboard() { - QMimeData* mimeData = selectionMimeData(); + QMimeData *mimeData = selectionMimeData(); + KUrlMimeData::exportUrlsToPortal(mimeData); QApplication::clipboard()->setMimeData(mimeData); } @@ -992,7 +1017,10 @@ void DolphinView::slotItemsActivated(const KItemSet &indexes) if (indexes.count() > 5) { QString question = i18np("Are you sure you want to open 1 item?", "Are you sure you want to open %1 items?", indexes.count()); - const int answer = KMessageBox::warningYesNo(this, question); + const int answer = KMessageBox::warningYesNo(this, question, {}, + KGuiItem(i18ncp("@action:button", "Open %1 Item", "Open %1 Items", indexes.count()), + QStringLiteral("document-open")), + KStandardGuiItem::cancel()); if (answer != KMessageBox::Yes) { return; } @@ -1339,7 +1367,7 @@ void DolphinView::slotItemCreated(const QUrl& url) void DolphinView::slotJobResult(KJob *job) { - if (job->error()) { + if (job->error() && job->error() != KIO::ERR_USER_CANCELED) { Q_EMIT errorMessage(job->errorString()); } if (!m_selectedUrls.isEmpty()) { @@ -1462,6 +1490,16 @@ bool DolphinView::itemsExpandable() const return m_mode == DetailsView; } +bool DolphinView::isExpanded(const KFileItem& item) const +{ + Q_ASSERT(item.isDir()); + Q_ASSERT(items().contains(item)); + if (!itemsExpandable()) { + return false; + } + return m_model->isExpanded(m_model->index(item)); +} + void DolphinView::restoreState(QDataStream& stream) { // Read the version number of the view state and check if the version is supported.