mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-05 16:19:10 +00:00
Create thumbnails with scene devicePixelRatio
This commit is contained in:
parent
ecd3675aaa
commit
90770d305a
|
@ -67,6 +67,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel *model, QO
|
|||
, m_finishedItems()
|
||||
, m_model(model)
|
||||
, m_iconSize()
|
||||
, m_devicePixelRatio(1.0)
|
||||
, m_firstVisibleIndex(0)
|
||||
, m_lastVisibleIndex(-1)
|
||||
, m_maximumVisibleItems(50)
|
||||
|
@ -158,6 +159,25 @@ QSize KFileItemModelRolesUpdater::iconSize() const
|
|||
return m_iconSize;
|
||||
}
|
||||
|
||||
void KFileItemModelRolesUpdater::setDevicePixelRatio(qreal devicePixelRatio)
|
||||
{
|
||||
if (m_devicePixelRatio != devicePixelRatio) {
|
||||
m_devicePixelRatio = devicePixelRatio;
|
||||
if (m_state == Paused) {
|
||||
m_iconSizeChangedDuringPausing = true;
|
||||
} else if (m_previewShown) {
|
||||
// A dpr change requires the regenerating of all previews.
|
||||
m_finishedItems.clear();
|
||||
startUpdating();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
qreal KFileItemModelRolesUpdater::devicePixelRatio() const
|
||||
{
|
||||
return m_devicePixelRatio;
|
||||
}
|
||||
|
||||
void KFileItemModelRolesUpdater::setVisibleIndexRange(int index, int count)
|
||||
{
|
||||
if (index < 0) {
|
||||
|
@ -992,7 +1012,7 @@ void KFileItemModelRolesUpdater::startPreviewJob()
|
|||
}
|
||||
|
||||
KIO::PreviewJob *job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins);
|
||||
|
||||
job->setDevicePixelRatio(m_devicePixelRatio);
|
||||
job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile() && !itemSubSet.first().isSlow() && m_localFileSizePreviewLimit <= 0);
|
||||
if (job->uiDelegate()) {
|
||||
KJobWidgets::setWindow(job, qApp->activeWindow());
|
||||
|
@ -1038,8 +1058,8 @@ QPixmap KFileItemModelRolesUpdater::transformPreviewPixmap(const QPixmap &pixmap
|
|||
}
|
||||
}
|
||||
} else if (!pixmap.isNull()) {
|
||||
KPixmapModifier::scale(scaledPixmap, m_iconSize * qApp->devicePixelRatio());
|
||||
scaledPixmap.setDevicePixelRatio(qApp->devicePixelRatio());
|
||||
KPixmapModifier::scale(scaledPixmap, m_iconSize * m_devicePixelRatio);
|
||||
scaledPixmap.setDevicePixelRatio(m_devicePixelRatio);
|
||||
}
|
||||
|
||||
return scaledPixmap;
|
||||
|
|
|
@ -89,6 +89,9 @@ public:
|
|||
void setIconSize(const QSize &size);
|
||||
QSize iconSize() const;
|
||||
|
||||
void setDevicePixelRatio(qreal devicePixelRatio);
|
||||
qreal devicePixelRatio() const;
|
||||
|
||||
/**
|
||||
* Sets the range of items that are visible currently. The roles
|
||||
* of visible items are resolved first.
|
||||
|
@ -366,6 +369,7 @@ private:
|
|||
|
||||
KFileItemModel *m_model;
|
||||
QSize m_iconSize;
|
||||
qreal m_devicePixelRatio;
|
||||
int m_firstVisibleIndex;
|
||||
int m_lastVisibleIndex;
|
||||
int m_maximumVisibleItems;
|
||||
|
|
|
@ -79,8 +79,6 @@ int main(int argc, char **argv)
|
|||
QApplication app(argc, argv);
|
||||
app.setWindowIcon(QIcon::fromTheme(QStringLiteral("system-file-manager"), app.windowIcon()));
|
||||
|
||||
KIO::PreviewJob::setDefaultDevicePixelRatio(app.devicePixelRatio());
|
||||
|
||||
KCrash::initialize();
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
|
|
|
@ -178,6 +178,7 @@ void InformationPanelContent::refreshPixmapView()
|
|||
m_previewJob = new KIO::PreviewJob(KFileItemList() << m_item, QSize(m_preview->width(), m_preview->height()), &plugins);
|
||||
m_previewJob->setScaleType(KIO::PreviewJob::Unscaled);
|
||||
m_previewJob->setIgnoreMaximumSize(m_item.isLocalFile() && !m_item.isSlow());
|
||||
m_previewJob->setDevicePixelRatio(devicePixelRatioF());
|
||||
if (m_previewJob->uiDelegate()) {
|
||||
KJobWidgets::setWindow(m_previewJob, this);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue