mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 22:26:32 +02:00
* Added global common image cache.
This commit is contained in:
Binary file not shown.
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 15 KiB |
Binary file not shown.
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 7.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 12 KiB |
@@ -100,8 +100,6 @@ AudioControls::AudioControls( QWidget* parent )
|
|||||||
m_sliderTimeLine.setCurveShape( QTimeLine::LinearCurve );
|
m_sliderTimeLine.setCurveShape( QTimeLine::LinearCurve );
|
||||||
ui->seekSlider->setTimeLine( &m_sliderTimeLine );
|
ui->seekSlider->setTimeLine( &m_sliderTimeLine );
|
||||||
|
|
||||||
m_defaultCover = QPixmap( RESPATH "images/no-album-no-case.png" ).scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
|
|
||||||
|
|
||||||
connect( &m_phononTickCheckTimer, SIGNAL( timeout() ), SLOT( phononTickCheckTimeout() ) );
|
connect( &m_phononTickCheckTimer, SIGNAL( timeout() ), SLOT( phononTickCheckTimeout() ) );
|
||||||
connect( &m_sliderTimeLine, SIGNAL( frameChanged( int ) ), ui->seekSlider, SLOT( setValue( int ) ) );
|
connect( &m_sliderTimeLine, SIGNAL( frameChanged( int ) ), ui->seekSlider, SLOT( setValue( int ) ) );
|
||||||
|
|
||||||
@@ -271,7 +269,7 @@ AudioControls::setAlbumCover()
|
|||||||
ui->coverImage->setPixmap( cover );
|
ui->coverImage->setPixmap( cover );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ui->coverImage->setPixmap( m_defaultCover );
|
ui->coverImage->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::ScaledCover, ui->coverImage->size() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -91,8 +91,6 @@ private:
|
|||||||
|
|
||||||
Ui::AudioControls *ui;
|
Ui::AudioControls *ui;
|
||||||
|
|
||||||
QPixmap m_defaultCover;
|
|
||||||
|
|
||||||
Tomahawk::result_ptr m_currentTrack;
|
Tomahawk::result_ptr m_currentTrack;
|
||||||
Tomahawk::PlaylistInterface::RepeatMode m_repeatMode;
|
Tomahawk::PlaylistInterface::RepeatMode m_repeatMode;
|
||||||
bool m_shuffled;
|
bool m_shuffled;
|
||||||
|
@@ -122,29 +122,29 @@ Album::cover( const QSize& size, bool forceLoad ) const
|
|||||||
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
|
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !m_cover )
|
if ( !m_cover && !m_coverBuffer.isEmpty() )
|
||||||
m_cover = new QPixmap();
|
|
||||||
|
|
||||||
if ( m_cover->isNull() && !m_coverBuffer.isEmpty() )
|
|
||||||
{
|
{
|
||||||
|
m_cover = new QPixmap();
|
||||||
m_cover->loadFromData( m_coverBuffer );
|
m_cover->loadFromData( m_coverBuffer );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !m_cover->isNull() && !size.isEmpty() )
|
if ( m_cover && !m_cover->isNull() && !size.isEmpty() )
|
||||||
{
|
{
|
||||||
if ( m_coverCache.contains( size.width() ) )
|
if ( m_coverCache.contains( size.width() ) )
|
||||||
{
|
{
|
||||||
return m_coverCache.value( size.width() );
|
return m_coverCache.value( size.width() );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
QPixmap scaledCover;
|
||||||
QPixmap scaledCover;
|
scaledCover = m_cover->scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation );
|
||||||
scaledCover = m_cover->scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation );
|
m_coverCache.insert( size.width(), scaledCover );
|
||||||
m_coverCache.insert( size.width(), scaledCover );
|
return scaledCover;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return *m_cover;
|
if ( m_cover )
|
||||||
|
return *m_cover;
|
||||||
|
else
|
||||||
|
return QPixmap();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -113,29 +113,29 @@ Artist::cover( const QSize& size, bool forceLoad ) const
|
|||||||
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
|
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !m_cover )
|
if ( !m_cover && !m_coverBuffer.isEmpty() )
|
||||||
m_cover = new QPixmap();
|
|
||||||
|
|
||||||
if ( m_cover->isNull() && !m_coverBuffer.isEmpty() )
|
|
||||||
{
|
{
|
||||||
|
m_cover = new QPixmap();
|
||||||
m_cover->loadFromData( m_coverBuffer );
|
m_cover->loadFromData( m_coverBuffer );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !m_cover->isNull() && !size.isEmpty() )
|
if ( m_cover && !m_cover->isNull() && !size.isEmpty() )
|
||||||
{
|
{
|
||||||
if ( m_coverCache.contains( size.width() ) )
|
if ( m_coverCache.contains( size.width() ) )
|
||||||
{
|
{
|
||||||
return m_coverCache.value( size.width() );
|
return m_coverCache.value( size.width() );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
QPixmap scaledCover;
|
||||||
QPixmap scaledCover;
|
scaledCover = m_cover->scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation );
|
||||||
scaledCover = m_cover->scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation );
|
m_coverCache.insert( size.width(), scaledCover );
|
||||||
m_coverCache.insert( size.width(), scaledCover );
|
return scaledCover;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return *m_cover;
|
if ( m_cover )
|
||||||
|
return *m_cover;
|
||||||
|
else
|
||||||
|
return QPixmap();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -40,7 +40,6 @@ AlbumItemDelegate::AlbumItemDelegate( QAbstractItemView* parent, AlbumProxyModel
|
|||||||
, m_view( parent )
|
, m_view( parent )
|
||||||
, m_model( proxy )
|
, m_model( proxy )
|
||||||
{
|
{
|
||||||
m_defaultCover = QPixmap( RESPATH "images/no-album-art-placeholder.png" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -94,15 +93,14 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
|
|||||||
if ( !item->album().isNull() )
|
if ( !item->album().isNull() )
|
||||||
{
|
{
|
||||||
cover = item->album()->cover( r.size() );
|
cover = item->album()->cover( r.size() );
|
||||||
|
if ( cover.isNull() )
|
||||||
|
cover = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::CoverInCase, r.size() );
|
||||||
}
|
}
|
||||||
else if ( !item->artist().isNull() )
|
else if ( !item->artist().isNull() )
|
||||||
{
|
{
|
||||||
cover = item->artist()->cover( r.size() );
|
cover = item->artist()->cover( r.size() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cover.isNull() )
|
|
||||||
cover = m_defaultCover;
|
|
||||||
|
|
||||||
if ( option.state & QStyle::State_Selected )
|
if ( option.state & QStyle::State_Selected )
|
||||||
{
|
{
|
||||||
#if defined(Q_WS_MAC) || defined(Q_WS_WIN)
|
#if defined(Q_WS_MAC) || defined(Q_WS_WIN)
|
||||||
|
@@ -53,7 +53,6 @@ private:
|
|||||||
QPersistentModelIndex m_hoveringOver;
|
QPersistentModelIndex m_hoveringOver;
|
||||||
|
|
||||||
QPixmap m_shadowPixmap;
|
QPixmap m_shadowPixmap;
|
||||||
QPixmap m_defaultCover;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ALBUMITEMDELEGATE_H
|
#endif // ALBUMITEMDELEGATE_H
|
||||||
|
@@ -156,18 +156,14 @@ TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
|
|||||||
if ( !item->album().isNull() )
|
if ( !item->album().isNull() )
|
||||||
{
|
{
|
||||||
cover = item->album()->cover( r.size(), false );
|
cover = item->album()->cover( r.size(), false );
|
||||||
|
if ( cover.isNull() )
|
||||||
|
cover = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::ScaledCover, r.size() );
|
||||||
}
|
}
|
||||||
else if ( !item->artist().isNull() )
|
else if ( !item->artist().isNull() )
|
||||||
{
|
{
|
||||||
cover = item->artist()->cover( r.size(), false );
|
cover = item->artist()->cover( r.size(), false );
|
||||||
}
|
if ( cover.isNull() )
|
||||||
|
cover = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::ScaledCover, r.size() );
|
||||||
if ( cover.isNull() )
|
|
||||||
{
|
|
||||||
if ( !item->artist().isNull() )
|
|
||||||
cover = m_defaultArtistImage;
|
|
||||||
else
|
|
||||||
cover = m_defaultAlbumCover;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
painter->drawPixmap( r, cover );
|
painter->drawPixmap( r, cover );
|
||||||
|
@@ -42,6 +42,18 @@ namespace TomahawkUtils
|
|||||||
MediaTypeTrack
|
MediaTypeTrack
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ImageType
|
||||||
|
{
|
||||||
|
DefaultAlbumCover,
|
||||||
|
DefaultArtistImage
|
||||||
|
};
|
||||||
|
enum ImageMode
|
||||||
|
{
|
||||||
|
NoDefaultCover,
|
||||||
|
CoverInCase,
|
||||||
|
ScaledCover
|
||||||
|
};
|
||||||
|
|
||||||
class DLLEXPORT NetworkProxyFactory : public QNetworkProxyFactory
|
class DLLEXPORT NetworkProxyFactory : public QNetworkProxyFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@@ -36,6 +36,8 @@
|
|||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
namespace TomahawkUtils
|
namespace TomahawkUtils
|
||||||
{
|
{
|
||||||
static int s_headerHeight = 0;
|
static int s_headerHeight = 0;
|
||||||
@@ -83,15 +85,15 @@ createDragPixmap( MediaType type, int itemCount )
|
|||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
switch ( type )
|
switch ( type )
|
||||||
{
|
{
|
||||||
case MediaTypeArtist:
|
case MediaTypeArtist:
|
||||||
pixmap = QPixmap( ":/data/images/artist-icon.png" ).scaledToWidth( size, Qt::SmoothTransformation );
|
pixmap = QPixmap( ":/data/images/artist-icon.png" ).scaledToWidth( size, Qt::SmoothTransformation );
|
||||||
break;
|
break;
|
||||||
case MediaTypeAlbum:
|
case MediaTypeAlbum:
|
||||||
pixmap = QPixmap( ":/data/images/album-icon.png" ).scaledToWidth( size, Qt::SmoothTransformation );
|
pixmap = QPixmap( ":/data/images/album-icon.png" ).scaledToWidth( size, Qt::SmoothTransformation );
|
||||||
break;
|
break;
|
||||||
case MediaTypeTrack:
|
case MediaTypeTrack:
|
||||||
pixmap = QPixmap( QString( ":/data/images/track-icon-%2x%2.png" ).arg( size ) );
|
pixmap = QPixmap( QString( ":/data/images/track-icon-%2x%2.png" ).arg( size ) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int x = 0;
|
int x = 0;
|
||||||
@@ -303,4 +305,59 @@ alphaBlend( const QColor& colorFrom, const QColor& colorTo, float opacity )
|
|||||||
return QColor( r, g, b );
|
return QColor( r, g, b );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QPixmap
|
||||||
|
defaultPixmap( ImageType type, ImageMode mode, const QSize& size )
|
||||||
|
{
|
||||||
|
QPixmap pixmap;
|
||||||
|
QHash< int, QPixmap > subsubcache;
|
||||||
|
QHash< int, QHash< int, QPixmap > > subcache;
|
||||||
|
static QHash< int, QHash< int, QHash< int, QPixmap > > > cache;
|
||||||
|
|
||||||
|
if ( cache.contains( type ) )
|
||||||
|
{
|
||||||
|
subcache = cache.value( type );
|
||||||
|
|
||||||
|
if ( subcache.contains( mode ) )
|
||||||
|
{
|
||||||
|
subsubcache = subcache.value( mode );
|
||||||
|
|
||||||
|
if ( subsubcache.contains( size.width() ) )
|
||||||
|
return subsubcache.value( size.width() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( type )
|
||||||
|
{
|
||||||
|
case DefaultAlbumCover:
|
||||||
|
if ( mode == CoverInCase )
|
||||||
|
pixmap = QPixmap( RESPATH "images/no-album-art-placeholder.png" );
|
||||||
|
else
|
||||||
|
pixmap = QPixmap( RESPATH "images/no-album-no-case.png" );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DefaultArtistImage:
|
||||||
|
pixmap = QPixmap( RESPATH "images/no-artist-image-placeholder.png" );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( pixmap.isNull() )
|
||||||
|
{
|
||||||
|
Q_ASSERT( false );
|
||||||
|
return QPixmap();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !size.isNull() )
|
||||||
|
pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
|
||||||
|
|
||||||
|
subsubcache.insert( size.width(), pixmap );
|
||||||
|
subcache.insert( mode, subsubcache );
|
||||||
|
cache.insert( type, subcache );
|
||||||
|
|
||||||
|
return pixmap;
|
||||||
|
}
|
||||||
|
|
||||||
} // ns
|
} // ns
|
||||||
|
@@ -19,6 +19,8 @@
|
|||||||
#ifndef TOMAHAWKUTILSGUI_H
|
#ifndef TOMAHAWKUTILSGUI_H
|
||||||
#define TOMAHAWKUTILSGUI_H
|
#define TOMAHAWKUTILSGUI_H
|
||||||
|
|
||||||
|
#include <QSize>
|
||||||
|
|
||||||
#include "tomahawkutils.h"
|
#include "tomahawkutils.h"
|
||||||
#include "dllmacro.h"
|
#include "dllmacro.h"
|
||||||
|
|
||||||
@@ -46,6 +48,8 @@ namespace TomahawkUtils
|
|||||||
|
|
||||||
DLLEXPORT int headerHeight();
|
DLLEXPORT int headerHeight();
|
||||||
DLLEXPORT void setHeaderHeight( int height );
|
DLLEXPORT void setHeaderHeight( int height );
|
||||||
|
|
||||||
|
DLLEXPORT QPixmap defaultPixmap( ImageType type, ImageMode mode, const QSize& size = QSize( 0, 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TOMAHAWKUTILSGUI_H
|
#endif // TOMAHAWKUTILSGUI_H
|
||||||
|
@@ -61,7 +61,7 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, ModelMode st
|
|||||||
ui->tracksView->setTreeModel( m_tracksModel );
|
ui->tracksView->setTreeModel( m_tracksModel );
|
||||||
ui->tracksView->setRootIsDecorated( false );
|
ui->tracksView->setRootIsDecorated( false );
|
||||||
|
|
||||||
m_pixmap = QPixmap( RESPATH "images/no-album-art-placeholder.png" ).scaledToWidth( 48, Qt::SmoothTransformation );
|
m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::ScaledCover, QSize( 48, 48 ) );
|
||||||
|
|
||||||
m_button = new OverlayButton( ui->tracksView );
|
m_button = new OverlayButton( ui->tracksView );
|
||||||
m_button->setCheckable( true );
|
m_button->setCheckable( true );
|
||||||
|
@@ -77,7 +77,7 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget*
|
|||||||
ui->topHits->setTrackModel( m_topHitsModel );
|
ui->topHits->setTrackModel( m_topHitsModel );
|
||||||
ui->topHits->setSortingEnabled( false );
|
ui->topHits->setSortingEnabled( false );
|
||||||
|
|
||||||
m_pixmap = QPixmap( RESPATH "images/no-album-no-case.png" ).scaledToWidth( 48, Qt::SmoothTransformation );
|
m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::ScaledCover, QSize( 48, 48 ) );
|
||||||
|
|
||||||
m_button = new OverlayButton( ui->albums );
|
m_button = new OverlayButton( ui->albums );
|
||||||
m_button->setText( tr( "Click to show Super Collection Albums" ) );
|
m_button->setText( tr( "Click to show Super Collection Albums" ) );
|
||||||
|
Reference in New Issue
Block a user