diff options
| author | Gastón Haro <[email protected]> | 2020-06-09 11:03:30 -0600 |
|---|---|---|
| committer | Nate Graham <[email protected]> | 2020-06-09 11:05:55 -0600 |
| commit | 0f0d14d4c236eee7f1df4f0c21c60f6b784dab75 (patch) | |
| tree | f8427ac7863efb0e46f77cb961a552d1644d2419 /src/kitemviews | |
| parent | ecc8b18b2a6aa6c45ae2db686cff9a8591c354f0 (diff) | |
Provide ability to configure size cut-off for local file previews
Summary:
FileWidgets read from kdeglobals the property "MaximumSize" under "PreviewSettings" to decide if a preview will be generated for that file.
There is no current GUI to change that file size limit. On the other hand Dolphin ignores it.
This patch aims to fix that by adding new configuration options to Dolphin. That is a new spinbox in Dolphin settings under General -> Previews tab.
Test Plan:
1 - Set up a local folder with 2 jpg images of less and more than 1 MB respectively.
2 - Go to Dolphin Preferences. General -> Previews and check "JPEG Images" from
the list. And set "Skip previews for files above:" to 1MB.
3 - Navigate to the afore mentioned folder. Only the image of size less than 1 MB should
show a preview.
BUG: 331240
Reviewers: ngraham, #dolphin, meven, elvisangelaccio
Reviewed By: ngraham, #dolphin, meven, elvisangelaccio
Subscribers: cfeck, kfm-devel
Tags: #dolphin
Differential Revision: https://phabricator.kde.org/D28402
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemlistview.cpp | 12 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemlistview.h | 11 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 16 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.h | 12 |
4 files changed, 49 insertions, 2 deletions
diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index 80d85aa2e..4fffbcbfd 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -116,6 +116,18 @@ QStringList KFileItemListView::enabledPlugins() const return m_modelRolesUpdater ? m_modelRolesUpdater->enabledPlugins() : QStringList(); } +void KFileItemListView::setLocalFileSizePreviewLimit(const qlonglong size) +{ + if (m_modelRolesUpdater) { + m_modelRolesUpdater->setLocalFileSizePreviewLimit(size); + } +} + +qlonglong KFileItemListView::localFileSizePreviewLimit() const +{ + return m_modelRolesUpdater ? m_modelRolesUpdater->localFileSizePreviewLimit() : 0; +} + QPixmap KFileItemListView::createDragPixmap(const KItemSet& indexes) const { if (!model()) { diff --git a/src/kitemviews/kfileitemlistview.h b/src/kitemviews/kfileitemlistview.h index c13ea5ef2..92005c2df 100644 --- a/src/kitemviews/kfileitemlistview.h +++ b/src/kitemviews/kfileitemlistview.h @@ -71,6 +71,17 @@ public: */ QStringList enabledPlugins() const; + /** + * Sets the maximum file size of local files for which + * previews will be generated (if enabled). A value of 0 + * indicates no file size limit. + * Per default the value from KConfigGroup "PreviewSettings" + * MaximumSize is used, 0 otherwise. + * @param size + */ + void setLocalFileSizePreviewLimit(qlonglong size); + qlonglong localFileSizePreviewLimit() const; + QPixmap createDragPixmap(const KItemSet& indexes) const override; protected: diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index c28e240a5..eb2c1b646 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -85,7 +85,8 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO m_recentlyChangedItemsTimer(nullptr), m_recentlyChangedItems(), m_changedItems(), - m_directoryContentsCounter(nullptr) + m_directoryContentsCounter(nullptr), + m_localFileSizePreviewLimit(0) #ifdef HAVE_BALOO , m_balooFileMonitor(nullptr) #endif @@ -94,6 +95,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); m_enabledPlugins = globalConfig.readEntry("Plugins", KIO::PreviewJob::defaultPlugins()); + m_localFileSizePreviewLimit = static_cast<qulonglong>(globalConfig.readEntry("MaximumSize", 0)); connect(m_model, &KFileItemModel::itemsInserted, this, &KFileItemModelRolesUpdater::slotItemsInserted); @@ -317,6 +319,16 @@ QStringList KFileItemModelRolesUpdater::enabledPlugins() const return m_enabledPlugins; } +void KFileItemModelRolesUpdater::setLocalFileSizePreviewLimit(const qlonglong size) +{ + m_localFileSizePreviewLimit = size; +} + +qlonglong KFileItemModelRolesUpdater::localFileSizePreviewLimit() const +{ + return m_localFileSizePreviewLimit; +} + void KFileItemModelRolesUpdater::slotItemsInserted(const KItemRangeList& itemRanges) { QElapsedTimer timer; @@ -898,7 +910,7 @@ void KFileItemModelRolesUpdater::startPreviewJob() KIO::PreviewJob* job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins); - job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile()); + job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile() && m_localFileSizePreviewLimit <= 0); if (job->uiDelegate()) { KJobWidgets::setWindow(job, qApp->activeWindow()); } diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h index e21cd30df..b881b73e4 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.h +++ b/src/kitemviews/kfileitemmodelrolesupdater.h @@ -154,6 +154,17 @@ public: */ QStringList enabledPlugins() const; + /** + * Sets the maximum file size of local files for which + * previews will be generated (if enabled). A value of 0 + * indicates no file size limit. + * Per default the value from KConfigGroup "PreviewSettings" + * MaximumSize is used, 0 otherwise. + * @param size + */ + void setLocalFileSizePreviewLimit(qlonglong size); + qlonglong localFileSizePreviewLimit() const; + private slots: void slotItemsInserted(const KItemRangeList& itemRanges); void slotItemsRemoved(const KItemRangeList& itemRanges); @@ -313,6 +324,7 @@ private: QSet<QByteArray> m_roles; QSet<QByteArray> m_resolvableRoles; QStringList m_enabledPlugins; + qulonglong m_localFileSizePreviewLimit; // Items for which the sort role still has to be determined. QSet<KFileItem> m_pendingSortRoleItems; |
