2 // (c) Pierpaolo Di Panfilo 2004
3 // See COPYING file for licensing information
8 #include "coverfetcher.h"
10 #include <q3ptrlist.h>
14 #include <Q3ValueList>
16 #include <k3iconview.h>
34 class CoverManager
: public QSplitter
38 static CoverManager
*s_instance
;
44 static CoverManager
*instance() { return s_instance
; }
46 static void showOnce( const QString
&artist
= QString() );
47 static void viewCover( const QString
& artist
, const QString
& album
, QWidget
*parent
=0 );
49 void setStatusText( QString text
);
51 // Return the top level domain for the current locale
52 static QString
amazonTld();
55 void updateStatusBar();
56 void changeLocale( int id
);
61 void slotArtistSelected( Q3ListViewItem
* );
62 void coverItemExecuted( Q3IconViewItem
*item
);
63 void showCoverMenu( Q3IconViewItem
*item
, const QPoint
& );
65 void slotSetFilterTimeout();
67 void slotShowAllAlbums() { changeView( AllAlbums
); }
68 void slotShowAlbumsWithCover() { changeView( AlbumsWithCover
); }
69 void slotShowAlbumsWithoutCover() { changeView( AlbumsWithoutCover
); }
70 void changeView( int id
);
72 void slotSetLocaleIntl() { changeLocale( CoverFetcher::International
); }
73 void slotSetLocaleCa() { changeLocale( CoverFetcher::Canada
); }
74 void slotSetLocaleDe() { changeLocale( CoverFetcher::Germany
); }
75 void slotSetLocaleFr() { changeLocale( CoverFetcher::France
); }
76 void slotSetLocaleJp() { changeLocale( CoverFetcher::Japan
); }
77 void slotSetLocaleUk() { changeLocale( CoverFetcher::UK
); }
79 void fetchMissingCovers();
80 void fetchCoversLoop();
81 void coverFetched( const QString
&, const QString
& );
82 void coverRemoved( const QString
&, const QString
& );
83 void coverFetcherError();
87 void setCustomSelectedCovers();
88 void fetchSelectedCovers();
89 void deleteSelectedCovers();
90 void viewSelectedCover();
91 void playSelectedAlbums();
94 enum View
{ AllAlbums
=0, AlbumsWithCover
, AlbumsWithoutCover
};
96 void loadCover( const QString
&, const QString
& );
97 Q3PtrList
<CoverViewItem
> selectedItems();
99 K3ListView
*m_artistView
;
100 CoverView
*m_coverView
;
101 KLineEdit
*m_searchEdit
;
102 KPushButton
*m_fetchButton
;
103 KMenu
*m_amazonLocaleMenu
;
105 QToolButton
*m_amazonLocaleButton
;
106 QToolButton
*m_viewButton
;
110 QAction
*m_selectAllAlbums
;
111 QAction
*m_selectAlbumsWithCover
;
112 QAction
*m_selectAlbumsWithoutCover
;
115 QLabel
*m_statusLabel
;
116 KHBox
*m_progressBox
;
117 QProgressBar
*m_progress
;
118 QString m_oldStatusText
;
120 QTimer
*m_timer
; //search filter timer
121 Q3PtrList
<Q3IconViewItem
> m_coverItems
; //used for filtering
125 // Used by fetchCoversLoop() for temporary storage
126 QStringList m_fetchCovers
;
129 //used to display information about cover fetching in the status bar
130 int m_fetchingCovers
;
135 class CoverView
: public K3IconView
140 explicit CoverView( QWidget
*parent
= 0, const char *name
= 0, Qt::WFlags f
= 0 );
143 Q3DragObject
*dragObject();
146 void setStatusText( Q3IconViewItem
*item
);
149 class CoverViewItem
: public K3IconViewItem
152 CoverViewItem( Q3IconView
*parent
, Q3IconViewItem
*after
, const QString
&artist
, const QString
&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 QPixmap
coverPixmap() const { return m_coverPixmap
; }
162 void paintItem(QPainter
* painter
, const QColorGroup
& colorGroup
);
163 void paintFocus(QPainter
*, const QColorGroup
&) { }
164 void dropped( QDropEvent
*, const Q3ValueList
<Q3IconDragItem
> & );
167 void calcRect( const QString
& text_
= QString() );
172 QString m_coverImagePath
;
173 QPixmap m_coverPixmap
;
178 class CoverViewDialog
: public QDialog
{
182 CoverViewDialog(const QString
& artist
, const QString
& album
, QWidget
*parent
);
185 QHBoxLayout
*m_layout
;
187 PixmapViewer
*m_pixmapViewer
;