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_finishedItems()
|
||||||
, m_model(model)
|
, m_model(model)
|
||||||
, m_iconSize()
|
, m_iconSize()
|
||||||
|
, m_devicePixelRatio(1.0)
|
||||||
, m_firstVisibleIndex(0)
|
, m_firstVisibleIndex(0)
|
||||||
, m_lastVisibleIndex(-1)
|
, m_lastVisibleIndex(-1)
|
||||||
, m_maximumVisibleItems(50)
|
, m_maximumVisibleItems(50)
|
||||||
|
@ -158,6 +159,25 @@ QSize KFileItemModelRolesUpdater::iconSize() const
|
||||||
return m_iconSize;
|
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)
|
void KFileItemModelRolesUpdater::setVisibleIndexRange(int index, int count)
|
||||||
{
|
{
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
|
@ -992,7 +1012,7 @@ void KFileItemModelRolesUpdater::startPreviewJob()
|
||||||
}
|
}
|
||||||
|
|
||||||
KIO::PreviewJob *job = new KIO::PreviewJob(itemSubSet, cacheSize, &m_enabledPlugins);
|
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);
|
job->setIgnoreMaximumSize(itemSubSet.first().isLocalFile() && !itemSubSet.first().isSlow() && m_localFileSizePreviewLimit <= 0);
|
||||||
if (job->uiDelegate()) {
|
if (job->uiDelegate()) {
|
||||||
KJobWidgets::setWindow(job, qApp->activeWindow());
|
KJobWidgets::setWindow(job, qApp->activeWindow());
|
||||||
|
@ -1038,8 +1058,8 @@ QPixmap KFileItemModelRolesUpdater::transformPreviewPixmap(const QPixmap &pixmap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!pixmap.isNull()) {
|
} else if (!pixmap.isNull()) {
|
||||||
KPixmapModifier::scale(scaledPixmap, m_iconSize * qApp->devicePixelRatio());
|
KPixmapModifier::scale(scaledPixmap, m_iconSize * m_devicePixelRatio);
|
||||||
scaledPixmap.setDevicePixelRatio(qApp->devicePixelRatio());
|
scaledPixmap.setDevicePixelRatio(m_devicePixelRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
return scaledPixmap;
|
return scaledPixmap;
|
||||||
|
|
|
@ -89,6 +89,9 @@ public:
|
||||||
void setIconSize(const QSize &size);
|
void setIconSize(const QSize &size);
|
||||||
QSize iconSize() const;
|
QSize iconSize() const;
|
||||||
|
|
||||||
|
void setDevicePixelRatio(qreal devicePixelRatio);
|
||||||
|
qreal devicePixelRatio() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the range of items that are visible currently. The roles
|
* Sets the range of items that are visible currently. The roles
|
||||||
* of visible items are resolved first.
|
* of visible items are resolved first.
|
||||||
|
@ -366,6 +369,7 @@ private:
|
||||||
|
|
||||||
KFileItemModel *m_model;
|
KFileItemModel *m_model;
|
||||||
QSize m_iconSize;
|
QSize m_iconSize;
|
||||||
|
qreal m_devicePixelRatio;
|
||||||
int m_firstVisibleIndex;
|
int m_firstVisibleIndex;
|
||||||
int m_lastVisibleIndex;
|
int m_lastVisibleIndex;
|
||||||
int m_maximumVisibleItems;
|
int m_maximumVisibleItems;
|
||||||
|
|
|
@ -79,8 +79,6 @@ int main(int argc, char **argv)
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
app.setWindowIcon(QIcon::fromTheme(QStringLiteral("system-file-manager"), app.windowIcon()));
|
app.setWindowIcon(QIcon::fromTheme(QStringLiteral("system-file-manager"), app.windowIcon()));
|
||||||
|
|
||||||
KIO::PreviewJob::setDefaultDevicePixelRatio(app.devicePixelRatio());
|
|
||||||
|
|
||||||
KCrash::initialize();
|
KCrash::initialize();
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
#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 = new KIO::PreviewJob(KFileItemList() << m_item, QSize(m_preview->width(), m_preview->height()), &plugins);
|
||||||
m_previewJob->setScaleType(KIO::PreviewJob::Unscaled);
|
m_previewJob->setScaleType(KIO::PreviewJob::Unscaled);
|
||||||
m_previewJob->setIgnoreMaximumSize(m_item.isLocalFile() && !m_item.isSlow());
|
m_previewJob->setIgnoreMaximumSize(m_item.isLocalFile() && !m_item.isSlow());
|
||||||
|
m_previewJob->setDevicePixelRatio(devicePixelRatioF());
|
||||||
if (m_previewJob->uiDelegate()) {
|
if (m_previewJob->uiDelegate()) {
|
||||||
KJobWidgets::setWindow(m_previewJob, this);
|
KJobWidgets::setWindow(m_previewJob, this);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue