1 /* This file is part of the KDE project
2 Copyright (C) 2007 Maximilian Kossick <maximilian.kossick@googlemail.com>
3 Copyright (C) 2007 Ian Monroe <ian@monroe.nu>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 #include "amarokconfig.h"
24 #include "collection.h"
25 #include "querymaker.h"
30 #include <KStandardDirs>
34 Meta::Observer::~Observer()
40 Meta::Observer::metadataChanged( Track
*track
)
46 Meta::Observer::metadataChanged( Artist
*artist
)
52 Meta::Observer::metadataChanged( Album
*album
)
58 Meta::Observer::metadataChanged( Composer
*composer
)
64 Meta::Observer::metadataChanged( Genre
*genre
)
70 Meta::Observer::metadataChanged( Year
*year
)
78 Meta::MetaBase::subscribe( Observer
*observer
)
81 m_observers
.insert( observer
);
85 Meta::MetaBase::unsubscribe( Observer
*observer
)
87 m_observers
.remove( observer
);
93 Meta::Track::inCollection() const
99 Meta::Track::collection() const
105 Meta::Track::cachedLyrics() const
111 Meta::Track::setCachedLyrics( const QString
&lyrics
)
117 Meta::Track::addMatchTo( QueryMaker
*qm
)
119 qm
->addMatch( TrackPtr( this ) );
123 Meta::Track::finishedPlaying( double playedFraction
)
125 Q_UNUSED( playedFraction
)
129 Meta::Track::notifyObservers() const
131 foreach( Observer
*observer
, m_observers
)
132 observer
->metadataChanged( const_cast<Meta::Track
*>( this ) );
138 Meta::Artist::addMatchTo( QueryMaker
*qm
)
140 qm
->addMatch( ArtistPtr( this ) );
144 Meta::Artist::notifyObservers() const
146 foreach( Observer
*observer
, m_observers
)
147 observer
->metadataChanged( const_cast<Meta::Artist
*>( this ) );
153 Meta::Album::addMatchTo( QueryMaker
*qm
)
155 qm
->addMatch( AlbumPtr( this ) );
159 Meta::Album::notifyObservers() const
161 foreach( Observer
*observer
, m_observers
)
162 observer
->metadataChanged( const_cast<Meta::Album
*>( this ) );
166 Meta::Album::image( int size
, bool withShadow
) const
168 Q_UNUSED( withShadow
);
170 QDir cacheCoverDir
= QDir( Amarok::saveLocation( "albumcovers/cache/" ) );
172 size
= AmarokConfig::coverPreviewSize();
173 QString sizeKey
= QString::number( size
) + '@';
176 if( cacheCoverDir
.exists( sizeKey
+ "nocover.png" ) )
177 img
= QImage( cacheCoverDir
.filePath( sizeKey
+ "nocover.png" ) );
180 QImage orgImage
= QImage( KStandardDirs::locate( "data", "amarok/images/nocover.png" ) ); //optimise this!
181 img
= orgImage
.scaled( size
, size
, Qt::KeepAspectRatio
, Qt::SmoothTransformation
); //scaled does not
182 img
.save( cacheCoverDir
.filePath( sizeKey
+ "nocover.png" ), "PNG" );
186 //s = makeShadowedImage( s );
188 return QPixmap::fromImage( img
);
194 Meta::Genre::addMatchTo( QueryMaker
*qm
)
196 qm
->addMatch( GenrePtr( this ) );
200 Meta::Genre::notifyObservers() const
202 foreach( Observer
*observer
, m_observers
)
203 observer
->metadataChanged( const_cast<Meta::Genre
*>( this ) );
209 Meta::Composer::addMatchTo( QueryMaker
*qm
)
211 qm
->addMatch( ComposerPtr( this ) );
215 Meta::Composer::notifyObservers() const
217 foreach( Observer
*observer
, m_observers
)
218 observer
->metadataChanged( const_cast<Meta::Composer
*>( this ) );
224 Meta::Year::addMatchTo( QueryMaker
*qm
)
226 qm
->addMatch( YearPtr( this ) );
230 Meta::Year::notifyObservers() const
232 foreach( Observer
*observer
, m_observers
)
233 observer
->metadataChanged( const_cast<Meta::Year
*>( this ) );