2 // (c) Pierpaolo Di Panfilo 2004
3 // See COPYING file for licensing information
8 #include "CoverFetcher.h"
14 #include <QListWidget>
15 #include <QListWidgetItem>
21 class QTreeWidgetItem
;
33 class CoverManager
: public QSplitter
, public Meta::Observer
37 static CoverManager
*s_instance
;
43 static CoverManager
*instance() { return s_instance
; }
45 static void showOnce( const QString
&artist
= QString() );
46 static void viewCover( Meta::AlbumPtr album
, QWidget
*parent
=0 );
48 void setStatusText( QString text
);
50 // Return the top level domain for the current locale
51 static QString
amazonTld();
53 // Reimplemented from Meta::Observer
54 void metadataChanged( Meta::Album
* album
);
57 void updateStatusBar();
58 void changeLocale( int id
);
63 void slotArtistSelected();
64 void coverItemExecuted( QListWidgetItem
*item
);
65 void showCoverMenu( QListWidgetItem
*item
, const QPoint
& );
67 void slotSetFilterTimeout();
69 void slotShowAllAlbums() { changeView( AllAlbums
); }
70 void slotShowAlbumsWithCover() { changeView( AlbumsWithCover
); }
71 void slotShowAlbumsWithoutCover() { changeView( AlbumsWithoutCover
); }
72 void changeView( int id
);
74 void slotSetLocaleIntl() { changeLocale( CoverFetcher::International
); }
75 void slotSetLocaleCa() { changeLocale( CoverFetcher::Canada
); }
76 void slotSetLocaleDe() { changeLocale( CoverFetcher::Germany
); }
77 void slotSetLocaleFr() { changeLocale( CoverFetcher::France
); }
78 void slotSetLocaleJp() { changeLocale( CoverFetcher::Japan
); }
79 void slotSetLocaleUk() { changeLocale( CoverFetcher::UK
); }
81 void fetchMissingCovers();
82 void coverFetched( const QString
&, const QString
& );
83 void coverRemoved( const QString
&, const QString
& );
84 void coverFetcherError();
88 void setCustomSelectedCovers();
89 void fetchSelectedCovers();
90 void deleteSelectedCovers();
91 void viewSelectedCover();
92 void playSelectedAlbums();
95 enum View
{ AllAlbums
=0, AlbumsWithCover
, AlbumsWithoutCover
};
97 void loadCover( const QString
&, const QString
& );
98 QList
<CoverViewItem
*> selectedItems();
100 QTreeWidget
*m_artistView
;
101 CoverView
*m_coverView
;
102 KLineEdit
*m_searchEdit
;
103 KPushButton
*m_fetchButton
;
104 KMenu
*m_amazonLocaleMenu
;
106 QToolButton
*m_amazonLocaleButton
;
107 QToolButton
*m_viewButton
;
111 CoverFetcher
*m_fetcher
;
113 QAction
*m_selectAllAlbums
;
114 QAction
*m_selectAlbumsWithCover
;
115 QAction
*m_selectAlbumsWithoutCover
;
118 QLabel
*m_statusLabel
;
119 KHBox
*m_progressBox
;
120 QProgressBar
*m_progress
;
121 QString m_oldStatusText
;
123 QTimer
*m_timer
; //search filter timer
124 QList
<CoverViewItem
*> m_coverItems
; //used for filtering
128 // Used by fetchCoversLoop() for temporary storage
129 Meta::AlbumList m_fetchCovers
;
131 //used to display information about cover fetching in the status bar
132 int m_fetchingCovers
;
137 class CoverView
: public QListWidget
142 explicit CoverView( QWidget
*parent
= 0, const char *name
= 0, Qt::WFlags f
= 0 );
145 void setStatusText( QListWidgetItem
*item
);
148 class CoverViewItem
: public QListWidgetItem
151 CoverViewItem( QListWidget
*parent
, Meta::AlbumPtr album
);
155 bool hasCover() const;
156 bool canRemoveCover() const { return !m_embedded
&& hasCover(); }
157 QString
artist() const { return m_artist
; }
158 QString
album() const { return m_album
; }
159 Meta::AlbumPtr
albumPtr() const { return m_albumPtr
; }
160 QPixmap
coverPixmap() const { return m_coverPixmap
; }
163 void paintFocus(QPainter
*, const QColorGroup
&) { }
164 // void dropped( QDropEvent *, const Q3ValueList<Q3IconDragItem> & );
167 void calcRect( const QString
& text_
= QString() );
170 Meta::AlbumPtr m_albumPtr
;
173 QString m_coverImagePath
;
174 QPixmap m_coverPixmap
;
176 QListWidget
*m_parent
;
180 class CoverViewDialog
: public QDialog
185 CoverViewDialog(Meta::AlbumPtr album
, QWidget
*parent
);
188 QHBoxLayout
*m_layout
;
190 PixmapViewer
*m_pixmapViewer
;