mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
allow to specify a transition type
svn path=/trunk/KDE/kdebase/apps/; revision=660579
This commit is contained in:
parent
7f2033899d
commit
0bdc4821e4
3 changed files with 41 additions and 12 deletions
|
@ -72,7 +72,7 @@ IconSizeDialog::IconSizeDialog(QWidget* parent) :
|
||||||
this, SLOT(updateIconSize(int)));
|
this, SLOT(updateIconSize(int)));
|
||||||
new QLabel(i18n("Large"), iconSizeHBox);
|
new QLabel(i18n("Large"), iconSizeHBox);
|
||||||
|
|
||||||
m_iconSizeViewer = new PixmapViewer(iconSizeBox);
|
m_iconSizeViewer = new PixmapViewer(iconSizeBox, PixmapViewer::SizeTransition);
|
||||||
m_iconSizeViewer->setMinimumWidth(K3Icon::SizeEnormous);
|
m_iconSizeViewer->setMinimumWidth(K3Icon::SizeEnormous);
|
||||||
m_iconSizeViewer->setFixedHeight(K3Icon::SizeEnormous);
|
m_iconSizeViewer->setFixedHeight(K3Icon::SizeEnormous);
|
||||||
m_iconSizeViewer->setEraseColor(iconBackgroundColor);
|
m_iconSizeViewer->setEraseColor(iconBackgroundColor);
|
||||||
|
@ -95,7 +95,7 @@ IconSizeDialog::IconSizeDialog(QWidget* parent) :
|
||||||
this, SLOT(updatePreviewSize(int)));
|
this, SLOT(updatePreviewSize(int)));
|
||||||
new QLabel(i18n("Large"), previewSizeHBox);
|
new QLabel(i18n("Large"), previewSizeHBox);
|
||||||
|
|
||||||
m_previewSizeViewer = new PixmapViewer(previewSizeBox);
|
m_previewSizeViewer = new PixmapViewer(previewSizeBox, PixmapViewer::SizeTransition);
|
||||||
m_previewSizeViewer->setMinimumWidth(K3Icon::SizeEnormous);
|
m_previewSizeViewer->setMinimumWidth(K3Icon::SizeEnormous);
|
||||||
m_previewSizeViewer->setFixedHeight(K3Icon::SizeEnormous);
|
m_previewSizeViewer->setFixedHeight(K3Icon::SizeEnormous);
|
||||||
m_previewSizeViewer->setEraseColor(iconBackgroundColor);
|
m_previewSizeViewer->setEraseColor(iconBackgroundColor);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2006 by Peter Penz *
|
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||||
* peter.penz@gmx.at *
|
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
* it under the terms of the GNU General Public License as published by *
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
@ -25,8 +24,9 @@
|
||||||
#include <QtGui/QPixmap>
|
#include <QtGui/QPixmap>
|
||||||
#include <QtGui/QPaintEvent>
|
#include <QtGui/QPaintEvent>
|
||||||
|
|
||||||
PixmapViewer::PixmapViewer(QWidget* parent) :
|
PixmapViewer::PixmapViewer(QWidget* parent, Transition transition) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
|
m_transition(transition),
|
||||||
m_animationStep(0)
|
m_animationStep(0)
|
||||||
{
|
{
|
||||||
setMinimumWidth(K3Icon::SizeEnormous);
|
setMinimumWidth(K3Icon::SizeEnormous);
|
||||||
|
@ -48,8 +48,11 @@ void PixmapViewer::setPixmap(const QPixmap& pixmap)
|
||||||
|
|
||||||
m_oldPixmap = m_pixmap.isNull() ? pixmap : m_pixmap;
|
m_oldPixmap = m_pixmap.isNull() ? pixmap : m_pixmap;
|
||||||
m_pixmap = pixmap;
|
m_pixmap = pixmap;
|
||||||
|
update();
|
||||||
|
|
||||||
m_animation.start();
|
if (m_transition != NoTransition) {
|
||||||
|
m_animation.start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PixmapViewer::paintEvent(QPaintEvent* event)
|
void PixmapViewer::paintEvent(QPaintEvent* event)
|
||||||
|
@ -65,7 +68,9 @@ void PixmapViewer::paintEvent(QPaintEvent* event)
|
||||||
const int x = (width() - scaledWidth ) / 2;
|
const int x = (width() - scaledWidth ) / 2;
|
||||||
const int y = (height() - scaledHeight) / 2;
|
const int y = (height() - scaledHeight) / 2;
|
||||||
|
|
||||||
const QPixmap& largePixmap = (m_oldPixmap.width() > m_pixmap.width()) ? m_oldPixmap : m_pixmap;
|
const bool useOldPixmap = (m_transition == SizeTransition) &&
|
||||||
|
(m_oldPixmap.width() > m_pixmap.width());
|
||||||
|
const QPixmap& largePixmap = useOldPixmap ? m_oldPixmap : m_pixmap;
|
||||||
const QPixmap scaledPixmap = largePixmap.scaled(scaledWidth,
|
const QPixmap scaledPixmap = largePixmap.scaled(scaledWidth,
|
||||||
scaledHeight,
|
scaledHeight,
|
||||||
Qt::IgnoreAspectRatio,
|
Qt::IgnoreAspectRatio,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2006 by Peter Penz *
|
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
|
||||||
* peter.penz@gmx.at *
|
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
* it under the terms of the GNU General Public License as published by *
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
@ -30,14 +29,38 @@ class QPaintEvent;
|
||||||
/**
|
/**
|
||||||
* @brief Widget which shows a pixmap centered inside the boundaries.
|
* @brief Widget which shows a pixmap centered inside the boundaries.
|
||||||
*
|
*
|
||||||
* @see IconsViewSettingsPage
|
* When the pixmap is changed, a smooth transition is done from the old pixmap
|
||||||
* @author Peter Penz <peter.penz@gmx.at>
|
* to the new pixmap.
|
||||||
*/
|
*/
|
||||||
class PixmapViewer : public QWidget
|
class PixmapViewer : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PixmapViewer(QWidget* parent);
|
enum Transition
|
||||||
|
{
|
||||||
|
/** No transition is done when the pixmap is changed. */
|
||||||
|
NoTransition,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The old pixmap is replaced by the new pixmap and the size is
|
||||||
|
* adjusted smoothly to the size of the new pixmap.
|
||||||
|
*/
|
||||||
|
DefaultTransition,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the old pixmap and the new pixmap have the same content, but
|
||||||
|
* a different size it is recommended to use Transition::SizeTransition
|
||||||
|
* instead of Transition::DefaultTransition. In this case it is assured
|
||||||
|
* that the larger pixmap is used for downscaling, which leads
|
||||||
|
* to an improved scaling output.
|
||||||
|
*/
|
||||||
|
SizeTransition
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit PixmapViewer(QWidget* parent,
|
||||||
|
Transition transition = DefaultTransition);
|
||||||
|
|
||||||
virtual ~PixmapViewer();
|
virtual ~PixmapViewer();
|
||||||
void setPixmap(const QPixmap& pixmap);
|
void setPixmap(const QPixmap& pixmap);
|
||||||
const QPixmap& pixmap() const
|
const QPixmap& pixmap() const
|
||||||
|
@ -52,6 +75,7 @@ private:
|
||||||
QPixmap m_pixmap;
|
QPixmap m_pixmap;
|
||||||
QPixmap m_oldPixmap;
|
QPixmap m_oldPixmap;
|
||||||
QTimeLine m_animation;
|
QTimeLine m_animation;
|
||||||
|
Transition m_transition;
|
||||||
int m_animationStep;
|
int m_animationStep;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue