X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/1826f905d706925456763394de17294bcb6d1c35..c8dffc433caacc9955b3054f6255ae50176e5533:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 0bb73e623..6b77a46ea 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -308,8 +308,8 @@ void DolphinView::setSelectionModeEnabled(const bool enabled) m_view->setStyle(m_proxyStyle.get()); m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::False); } else { - setStyle(QApplication::style()); - m_view->setStyle(QApplication::style()); + setStyle(nullptr); + m_view->setStyle(nullptr); m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::FollowSetting); } m_container->controller()->setSelectionModeEnabled(enabled); @@ -470,7 +470,13 @@ int DolphinView::zoomLevel() const void DolphinView::setSortRole(const QByteArray &role) { if (role != sortRole()) { - updateSortRole(role); + ViewProperties props(viewPropertiesUrl()); + props.setSortRole(role); + + KItemModelBase *model = m_container->controller()->model(); + model->setSortRole(role); + + Q_EMIT sortRoleChanged(role); } } @@ -483,7 +489,12 @@ QByteArray DolphinView::sortRole() const void DolphinView::setSortOrder(Qt::SortOrder order) { if (sortOrder() != order) { - updateSortOrder(order); + ViewProperties props(viewPropertiesUrl()); + props.setSortOrder(order); + + m_model->setSortOrder(order); + + Q_EMIT sortOrderChanged(order); } } @@ -640,11 +651,11 @@ void DolphinView::emitStatusBarText(const int folderCount, const int fileCount, if (selection == HasSelection) { // At least 2 items are selected because the case of 1 selected item is handled in // DolphinView::requestStatusBarText(). - foldersText = i18ncp("@info:status", "1 Folder selected", "%1 Folders selected", folderCount); - filesText = i18ncp("@info:status", "1 File selected", "%1 Files selected", fileCount); + foldersText = i18ncp("@info:status", "1 folder selected", "%1 folders selected", folderCount); + filesText = i18ncp("@info:status", "1 file selected", "%1 files selected", fileCount); } else { - foldersText = i18ncp("@info:status", "1 Folder", "%1 Folders", folderCount); - filesText = i18ncp("@info:status", "1 File", "%1 Files", fileCount); + foldersText = i18ncp("@info:status", "1 folder", "%1 folders", folderCount); + filesText = i18ncp("@info:status", "1 file", "%1 files", fileCount); } if (fileCount > 0 && folderCount > 0) { @@ -654,7 +665,7 @@ void DolphinView::emitStatusBarText(const int folderCount, const int fileCount, } else if (folderCount > 0) { summary = foldersText; } else { - summary = i18nc("@info:status", "0 Folders, 0 Files"); + summary = i18nc("@info:status", "0 folders, 0 files"); } Q_EMIT statusBarTextChanged(summary); } @@ -852,9 +863,12 @@ void DolphinView::duplicateSelectedItems() const QMimeDatabase db; + m_clearSelectionBeforeSelectingNewItems = true; + m_markFirstNewlySelectedItemAsCurrent = true; + m_selectJobCreatedItems = true; + // Duplicate all selected items and append "copy" to the end of the file name // but before the filename extension, if present - QList newSelection; for (const auto &item : itemList) { const QUrl originalURL = item.url(); const QString originalDirectoryPath = originalURL.adjusted(QUrl::RemoveFilename).path(); @@ -879,15 +893,14 @@ void DolphinView::duplicateSelectedItems() } KIO::CopyJob *job = KIO::copyAs(originalURL, duplicateURL); + job->setAutoRename(true); KJobWidgets::setWindow(job, this); - if (job) { - newSelection << duplicateURL; - KIO::FileUndoManager::self()->recordCopyJob(job); - } + connect(job, &KIO::CopyJob::result, this, &DolphinView::slotJobResult); + connect(job, &KIO::CopyJob::copyingDone, this, &DolphinView::slotItemCreatedFromJob); + connect(job, &KIO::CopyJob::copyingLinkDone, this, &DolphinView::slotItemLinkCreatedFromJob); + KIO::FileUndoManager::self()->recordCopyJob(job); } - - forceUrlsSelection(newSelection.first(), newSelection); } void DolphinView::stopLoading() @@ -1147,7 +1160,7 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF &pos) { ViewProperties props(viewPropertiesUrl()); - QPointer menu = new QMenu(QApplication::activeWindow()); + QPointer menu = new QMenu(this); KItemListView *view = m_container->controller()->view(); const QList visibleRolesSet = view->visibleRoles(); @@ -1411,6 +1424,11 @@ void DolphinView::slotItemCreatedFromJob(KIO::Job *, const QUrl &, const QUrl &t slotItemCreated(to); } +void DolphinView::slotItemLinkCreatedFromJob(KIO::Job *, const QUrl &, const QString &, const QUrl &to) +{ + slotItemCreated(to); +} + void DolphinView::slotItemCreated(const QUrl &url) { if (m_markFirstNewlySelectedItemAsCurrent) { @@ -1422,10 +1440,12 @@ void DolphinView::slotItemCreated(const QUrl &url) } } -void DolphinView::onDirectoryLoadingCompleted() +void DolphinView::onDirectoryLoadingCompletedAfterJob() { // the model should now contain all the items created by the job - updateSelectionState(); + m_selectJobCreatedItems = true; // to make sure we overwrite selection + // update the view: scroll into View and selection + updateViewState(); m_selectJobCreatedItems = false; m_selectedUrls.clear(); } @@ -1445,7 +1465,7 @@ void DolphinView::slotJobResult(KJob *job) updateSelectionState(); if (!m_selectedUrls.isEmpty()) { // not all urls were found, the model may not be up to date - connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::onDirectoryLoadingCompleted, Qt::UniqueConnection); + connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::onDirectoryLoadingCompletedAfterJob, Qt::SingleShotConnection); } else { m_selectJobCreatedItems = false; m_selectedUrls.clear(); @@ -1502,27 +1522,6 @@ void DolphinView::slotStatJobResult(KJob *job) emitStatusBarText(folderCount, fileCount, totalFileSize, NoSelection); } -void DolphinView::updateSortRole(const QByteArray &role) -{ - ViewProperties props(viewPropertiesUrl()); - props.setSortRole(role); - - KItemModelBase *model = m_container->controller()->model(); - model->setSortRole(role); - - Q_EMIT sortRoleChanged(role); -} - -void DolphinView::updateSortOrder(Qt::SortOrder order) -{ - ViewProperties props(viewPropertiesUrl()); - props.setSortOrder(order); - - m_model->setSortOrder(order); - - Q_EMIT sortOrderChanged(order); -} - void DolphinView::updateSortFoldersFirst(bool foldersFirst) { ViewProperties props(viewPropertiesUrl()); @@ -1938,10 +1937,7 @@ void DolphinView::slotSortRoleChangedByHeader(const QByteArray ¤t, const Q Q_UNUSED(previous) Q_ASSERT(m_model->sortRole() == current); - ViewProperties props(viewPropertiesUrl()); - props.setSortRole(current); - - Q_EMIT sortRoleChanged(current); + setSortRole(current); } void DolphinView::slotVisibleRolesChangedByHeader(const QList ¤t, const QList &previous)