diff options
Diffstat (limited to 'src/views')
| -rw-r--r-- | src/views/dolphinview.cpp | 18 | ||||
| -rw-r--r-- | src/views/dolphinviewactionhandler.cpp | 2 | ||||
| -rw-r--r-- | src/views/versioncontrol/kversioncontrolplugin.h | 17 | ||||
| -rw-r--r-- | src/views/versioncontrol/versioncontrolobserver.cpp | 14 | ||||
| -rw-r--r-- | src/views/versioncontrol/versioncontrolobserver.h | 2 |
5 files changed, 39 insertions, 14 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index d8f2aab93..f0dc17837 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -1200,7 +1200,7 @@ void DolphinView::slotPasteJobResult(KJob *job) emit errorMessage(job->errorString()); } if (!m_selectedUrls.isEmpty()) { - m_selectedUrls << KDirModel::simplifiedUrlList(m_selectedUrls); + m_selectedUrls = KDirModel::simplifiedUrlList(m_selectedUrls); } } @@ -1493,13 +1493,27 @@ void DolphinView::calculateItemCount(int& fileCount, KIO::filesize_t& totalFileSize) const { const int itemCount = m_model->count(); + + bool countFileSize = true; + + // In case we have a precomputed value + const auto job = KIO::statDetails(m_model->rootItem().url(), KIO::StatJob::SourceSide, KIO::StatRecursiveSize); + job->exec(); + const auto entry = job->statResult(); + if (entry.contains(KIO::UDSEntry::UDS_RECURSIVE_SIZE)) { + totalFileSize = static_cast<KIO::filesize_t>(entry.numberValue(KIO::UDSEntry::UDS_RECURSIVE_SIZE)); + countFileSize = false; + } + for (int i = 0; i < itemCount; ++i) { const KFileItem item = m_model->fileItem(i); if (item.isDir()) { ++folderCount; } else { ++fileCount; - totalFileSize += item.size(); + if (countFileSize) { + totalFileSize += item.size(); + } } } } diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index c61e1aaa9..e89e2e62c 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -283,7 +283,7 @@ void DolphinViewActionHandler::createActions() "<para>Hidden items only differ from other ones in that their " "name starts with a \".\". In general there is no need for " "users to access them which is why they are hidden.</para>")); - m_actionCollection->setDefaultShortcuts(showHiddenFiles, {Qt::ALT + Qt::Key_Period, Qt::CTRL + Qt::Key_H, Qt::Key_F8}); + m_actionCollection->setDefaultShortcuts(showHiddenFiles, KStandardShortcut::showHideHiddenFiles()); connect(showHiddenFiles, &KToggleAction::triggered, this, &DolphinViewActionHandler::toggleShowHiddenFiles); QAction* adjustViewProps = m_actionCollection->addAction(QStringLiteral("view_properties")); diff --git a/src/views/versioncontrol/kversioncontrolplugin.h b/src/views/versioncontrol/kversioncontrolplugin.h index 287974534..0d94a3fc8 100644 --- a/src/views/versioncontrol/kversioncontrolplugin.h +++ b/src/views/versioncontrol/kversioncontrolplugin.h @@ -180,14 +180,17 @@ public: virtual ItemVersion itemVersion(const KFileItem& item) const = 0; /** - * @return List of actions that are available for the items \p items. - * It is recommended to keep the number of returned actions small - * in case if an item is an unversioned directory that is not - * inside the hierarchy tree of the version control system. This - * prevents having a cluttered context menu for directories - * outside the version control system. + * @return List of actions that are available for the \p items in a version controlled + * path. */ - virtual QList<QAction*> actions(const KFileItemList& items) const = 0; + virtual QList<QAction*> versionControlActions(const KFileItemList& items) const = 0; + + /** + * @return List of actions that are available for the out of version control + * items \p items. It's opposed to the \p versionedActions. Common usage + * is for clone/checkout actions. + */ + virtual QList<QAction*> outOfVersionControlActions(const KFileItemList& items) const = 0; Q_SIGNALS: /** diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp index 2d801686e..f6c74fb5f 100644 --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -118,11 +118,19 @@ QList<QAction*> VersionControlObserver::actions(const KFileItemList& items) cons } } - if (!m_model || hasNullItems || !isVersioned()) { + if (!m_model || hasNullItems) { return {}; } - return m_plugin->actions(items); + if (isVersionControlled()) { + return m_plugin->versionControlActions(items); + } else { + QList<QAction*> actions; + for (const auto &plugin : qAsConst(m_plugins)) { + actions << plugin.first->outOfVersionControlActions(items); + } + return actions; + } } void VersionControlObserver::delayedDirectoryVerification() @@ -360,7 +368,7 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director return bestPlugin; } -bool VersionControlObserver::isVersioned() const +bool VersionControlObserver::isVersionControlled() const { return m_versionedDirectory && m_plugin; } diff --git a/src/views/versioncontrol/versioncontrolobserver.h b/src/views/versioncontrol/versioncontrolobserver.h index 66f992963..648c9d6fd 100644 --- a/src/views/versioncontrol/versioncontrolobserver.h +++ b/src/views/versioncontrol/versioncontrolobserver.h @@ -143,7 +143,7 @@ private: /** * Returns true, if the directory contains a version control information. */ - bool isVersioned() const; + bool isVersionControlled() const; private: bool m_pendingItemStatesUpdate; |
