1 Binary files amarok-1.4.10.orig/amarok/src/.coverfetcher.h.swp and amarok-1.4.10/amarok/src/.coverfetcher.h.swp differ
2 diff -urN amarok-1.4.10.orig/amarok/src/Makefile.am amarok-1.4.10/amarok/src/Makefile.am
3 --- amarok-1.4.10.orig/amarok/src/Makefile.am 2009-08-22 11:38:19.885762485 -0400
4 +++ amarok-1.4.10/amarok/src/Makefile.am 2009-08-22 13:22:31.982159988 -0400
6 podcastsettingsbase.ui \
12 scriptmanagerbase.ui \
13 diff -urN amarok-1.4.10.orig/amarok/src/Makefile.in amarok-1.4.10/amarok/src/Makefile.in
14 --- amarok-1.4.10.orig/amarok/src/Makefile.in 2009-08-22 11:38:19.885762485 -0400
15 +++ amarok-1.4.10/amarok/src/Makefile.in 2009-08-22 13:23:46.073894860 -0400
17 playlistbrowseritem.lo playlistitem.lo playlistloader.lo \
18 playlistselection.lo playlistwindow.lo pluginmanager.lo \
19 podcastsettings.lo prettypopupmenu.lo queuemanager.lo \
20 - refreshimages.lo scancontroller.lo scriptmanager.lo \
21 + scancontroller.lo scriptmanager.lo \
22 scrobbler.lo sliderwidget.lo smartplaylisteditor.lo \
23 socketserver.lo starmanager.lo statistics.lo systray.lo \
24 tagdialog.lo tagguesser.lo threadmanager.lo tooltip.lo \
26 playlistbrowseritem.lo playlistitem.lo playlistloader.lo \
27 playlistselection.lo playlistwindow.lo pluginmanager.lo \
28 podcastsettings.lo prettypopupmenu.lo queuemanager.lo \
29 - refreshimages.lo scancontroller.lo scriptmanager.lo \
30 + scancontroller.lo scriptmanager.lo \
31 scrobbler.lo sliderwidget.lo smartplaylisteditor.lo \
32 socketserver.lo starmanager.lo statistics.lo systray.lo \
33 tagdialog.lo tagguesser.lo threadmanager.lo tooltip.lo \
35 #>- podcastsettingsbase.ui \
36 #>- prettypopupmenu.cpp \
37 #>- queuemanager.cpp \
38 -#>- refreshimages.cpp \
39 #>- scancontroller.cpp \
40 #>- scriptmanager.cpp \
41 #>- scriptmanagerbase.ui \
51 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/podcastsettings.Plo@am__quote@
52 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prettypopupmenu.Plo@am__quote@
53 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queuemanager.Plo@am__quote@
54 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refreshimages.Plo@am__quote@
55 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scancontroller.Plo@am__quote@
56 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scriptmanager.Plo@am__quote@
57 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scrobbler.Plo@am__quote@
58 @@ -1611,13 +1608,6 @@
59 mocs: devicemanager.moc
62 -refreshimages.moc: $(srcdir)/refreshimages.h
63 - $(MOC) $(srcdir)/refreshimages.h -o refreshimages.moc
66 -mocs: refreshimages.moc
69 app.moc: $(srcdir)/app.h
70 $(MOC) $(srcdir)/app.h -o app.moc
72 @@ -2011,10 +2001,10 @@
76 - -rm -f browserbar.moc playlistbrowser.moc statistics.moc hintlineedit.moc mediabrowser.moc moodbar.moc devicemanager.moc refreshimages.moc app.moc prettypopupmenu.moc transferdialog.moc editfilterdialog.moc metabundlesaver.moc starmanager.moc socketserver.moc playlistselection.moc scancontroller.moc equalizerpresetmanager.moc collectiondb.moc deviceconfiguredialog.moc xmlloader_p.moc multitabbar.moc multitabbar_p.moc cuefile.moc mediadevicemanager.moc deletedialog.moc ktrm.moc directorylist.moc mediumpluginmanager.moc enginecontroller.moc tagdialog.moc collectionbrowser.moc xmlloader.moc contextbrowser.moc playlistbrowseritem.moc smartplaylisteditor.moc htmlview.moc mydiroperator.moc podcastsettings.moc mountpointmanager.moc actionclasses.moc filebrowser.moc columnlist.moc scrobbler.moc osd.moc scriptmanager.moc threadmanager.moc configdialog.moc equalizersetup.moc playlistwindow.moc tooltip.moc tracktooltip.moc clicklineedit.moc playlistloader.moc queuemanager.moc playlist.moc covermanager.moc trackpickerdialog.moc playerwindow.moc lastfm.moc pixmapviewer.moc enginebase.moc coverfetcher.moc sliderwidget.moc
77 + -rm -f browserbar.moc playlistbrowser.moc statistics.moc hintlineedit.moc mediabrowser.moc moodbar.moc devicemanager.moc app.moc prettypopupmenu.moc transferdialog.moc editfilterdialog.moc metabundlesaver.moc starmanager.moc socketserver.moc playlistselection.moc scancontroller.moc equalizerpresetmanager.moc collectiondb.moc deviceconfiguredialog.moc xmlloader_p.moc multitabbar.moc multitabbar_p.moc cuefile.moc mediadevicemanager.moc deletedialog.moc ktrm.moc directorylist.moc mediumpluginmanager.moc enginecontroller.moc tagdialog.moc collectionbrowser.moc xmlloader.moc contextbrowser.moc playlistbrowseritem.moc smartplaylisteditor.moc htmlview.moc mydiroperator.moc podcastsettings.moc mountpointmanager.moc actionclasses.moc filebrowser.moc columnlist.moc scrobbler.moc osd.moc scriptmanager.moc threadmanager.moc configdialog.moc equalizersetup.moc playlistwindow.moc tooltip.moc tracktooltip.moc clicklineedit.moc playlistloader.moc queuemanager.moc playlist.moc covermanager.moc trackpickerdialog.moc playerwindow.moc lastfm.moc pixmapviewer.moc enginebase.moc coverfetcher.moc sliderwidget.moc
80 -KDE_DIST=firstrunwizard.ui amarokui_xmms.rc playlistbrowser.h equalizersetup.h refreshimages.h Options2.ui Options5.ui.h trackpickerdialogbase.ui pixmapviewer.h amarok.desktop podcastsettings.h amarok_codecinstall.desktop transferdialog.h mydiroperator.h amarok_addaspodcast.desktop ktrm.h Options4.ui mediadevicemanager.h statistics.h playlistwindow.h amarok.h scriptmanager.h playlistloader.h playlistbrowseritem.h medium.h Options7.ui engineobserver.h hintlineedit.h tagguesserconfigdialog.ui editfilterdialog.h socketserver.h playerwindow.h deletedialogbase.ui hi22-app-amarok.png xmlloader.h Options8.ui queuemanager.h tracktooltip.h tagguesser.h collectionbrowser.h mountpointmanager.h hi128-app-amarok.png browserbar.h newdynamic.ui moodbar.h collectiondb.h playlistitem.h contextbrowser.h enginebase.h amarok_append.desktop playlistselection.h deviceconfiguredialog.h amarok_proxy.rb directorylist.h osd.h debug.h amarok_play_audiocd.desktop hi64-app-amarok.png scrobbler.h qstringx.h Makefile.in amarokpcast.protocol tagdialog.h amarokrc organizecollectiondialog.ui.h organizecollectiondialog.ui lastfm.h xmlloader_p.h starmanager.h pluginmanager.h systray.h enginecontroller.h firstrunwizard.ui.h amarok.profile.xml cuefile.h bcpp.cfg tagdialogbase.ui.h amarok_export.h amaroklastfm.protocol mydirlister.h smartplaylisteditor.h hi32-app-amarok.png tagdialogbase.ui sliderwidget.h tooltip.h actionclasses.h atomicurl.h expression.h Options2.ui.h hi48-app-amarok.png fht.h dynamicmode.h columnlist.h filebrowser.h podcastbundle.h clicklineedit.h xspfplaylist.h equalizergraph.h multitabbar_p.h colorgenerator.h threadmanager.h scriptmanagerbase.ui k3bexporter.h engine_fwd.h playlist.h devicemanager.h multitabbar.h metabundle.h amarok_plugin.desktop amarokui.rc prettypopupmenu.h htmlview.h configdialog.h browserToolBar.h hi16-app-amarok.png podcastsettingsbase.ui dbsetup.ui app.h tagguesserconfigdialog.ui.h deletedialog.h covermanager.h Options1.ui scancontroller.h amarokitpc.protocol kbookmarkhandler.h mediumpluginmanager.h metabundlesaver.h Options8.ui.h mediabrowser.h trackpickerdialog.h equalizerpresetmanager.h tdebug.h Options5.ui Makefile.am coverfetcher.h
81 +KDE_DIST=firstrunwizard.ui amarokui_xmms.rc playlistbrowser.h equalizersetup.h Options2.ui Options5.ui.h trackpickerdialogbase.ui pixmapviewer.h amarok.desktop podcastsettings.h amarok_codecinstall.desktop transferdialog.h mydiroperator.h amarok_addaspodcast.desktop ktrm.h Options4.ui mediadevicemanager.h statistics.h playlistwindow.h amarok.h scriptmanager.h playlistloader.h playlistbrowseritem.h medium.h Options7.ui engineobserver.h hintlineedit.h tagguesserconfigdialog.ui editfilterdialog.h socketserver.h playerwindow.h deletedialogbase.ui hi22-app-amarok.png xmlloader.h Options8.ui queuemanager.h tracktooltip.h tagguesser.h collectionbrowser.h mountpointmanager.h hi128-app-amarok.png browserbar.h newdynamic.ui moodbar.h collectiondb.h playlistitem.h contextbrowser.h enginebase.h amarok_append.desktop playlistselection.h deviceconfiguredialog.h amarok_proxy.rb directorylist.h osd.h debug.h amarok_play_audiocd.desktop hi64-app-amarok.png scrobbler.h qstringx.h Makefile.in amarokpcast.protocol tagdialog.h amarokrc organizecollectiondialog.ui.h organizecollectiondialog.ui lastfm.h xmlloader_p.h starmanager.h pluginmanager.h systray.h enginecontroller.h firstrunwizard.ui.h amarok.profile.xml cuefile.h bcpp.cfg tagdialogbase.ui.h amarok_export.h amaroklastfm.protocol mydirlister.h smartplaylisteditor.h hi32-app-amarok.png tagdialogbase.ui sliderwidget.h tooltip.h actionclasses.h atomicurl.h expression.h Options2.ui.h hi48-app-amarok.png fht.h dynamicmode.h columnlist.h filebrowser.h podcastbundle.h clicklineedit.h xspfplaylist.h equalizergraph.h multitabbar_p.h colorgenerator.h threadmanager.h scriptmanagerbase.ui k3bexporter.h engine_fwd.h playlist.h devicemanager.h multitabbar.h metabundle.h amarok_plugin.desktop amarokui.rc prettypopupmenu.h htmlview.h configdialog.h browserToolBar.h hi16-app-amarok.png podcastsettingsbase.ui dbsetup.ui app.h tagguesserconfigdialog.ui.h deletedialog.h covermanager.h Options1.ui scancontroller.h amarokitpc.protocol kbookmarkhandler.h mediumpluginmanager.h metabundlesaver.h Options8.ui.h mediabrowser.h trackpickerdialog.h equalizerpresetmanager.h tdebug.h Options5.ui Makefile.am coverfetcher.h
85 @@ -2101,11 +2091,11 @@
89 -libamarok_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/actionclasses.cpp $(srcdir)/app.cpp $(srcdir)/atomicstring.cpp $(srcdir)/atomicurl.cpp $(srcdir)/browserbar.cpp $(srcdir)/clicklineedit.cpp $(srcdir)/collectionbrowser.cpp $(srcdir)/collectiondb.cpp $(srcdir)/columnlist.cpp $(srcdir)/configdialog.cpp $(srcdir)/contextbrowser.cpp $(srcdir)/coverfetcher.cpp $(srcdir)/covermanager.cpp $(srcdir)/cuefile.cpp $(srcdir)/deletedialog.cpp $(srcdir)/deviceconfiguredialog.cpp $(srcdir)/devicemanager.cpp $(srcdir)/directorylist.cpp $(srcdir)/dynamicmode.cpp $(srcdir)/enginebase.cpp $(srcdir)/enginecontroller.cpp $(srcdir)/engineobserver.cpp $(srcdir)/equalizergraph.cpp $(srcdir)/equalizerpresetmanager.cpp $(srcdir)/equalizersetup.cpp $(srcdir)/expression.cpp $(srcdir)/fht.cpp $(srcdir)/filebrowser.cpp $(srcdir)/hintlineedit.cpp $(srcdir)/htmlview.cpp $(srcdir)/iconloader.cpp $(srcdir)/k3bexporter.cpp $(srcdir)/kbookmarkhandler.cpp $(srcdir)/ktrm.cpp $(srcdir)/lastfm.cpp $(srcdir)/mediabrowser.cpp $(srcdir)/mediadevicemanager.cpp $(srcdir)/medium.cpp $(srcdir)/mediumpluginmanager.cpp $(srcdir)/metabundle.cpp $(srcdir)/metabundlesaver.cpp $(srcdir)/moodbar.cpp $(srcdir)/mountpointmanager.cpp $(srcdir)/multitabbar.cpp $(srcdir)/mydiroperator.cpp $(srcdir)/osd.cpp $(srcdir)/pixmapviewer.cpp $(srcdir)/playerwindow.cpp $(srcdir)/playlist.cpp $(srcdir)/playlistbrowser.cpp $(srcdir)/playlistbrowseritem.cpp $(srcdir)/playlistitem.cpp $(srcdir)/playlistloader.cpp $(srcdir)/playlistselection.cpp $(srcdir)/playlistwindow.cpp $(srcdir)/pluginmanager.cpp $(srcdir)/podcastsettings.cpp $(srcdir)/prettypopupmenu.cpp $(srcdir)/queuemanager.cpp $(srcdir)/refreshimages.cpp $(srcdir)/scancontroller.cpp $(srcdir)/scriptmanager.cpp $(srcdir)/scrobbler.cpp $(srcdir)/sliderwidget.cpp $(srcdir)/smartplaylisteditor.cpp $(srcdir)/socketserver.cpp $(srcdir)/starmanager.cpp $(srcdir)/statistics.cpp $(srcdir)/systray.cpp $(srcdir)/tagdialog.cpp $(srcdir)/tagguesser.cpp $(srcdir)/threadmanager.cpp $(srcdir)/tooltip.cpp $(srcdir)/trackpickerdialog.cpp $(srcdir)/tracktooltip.cpp $(srcdir)/transferdialog.cpp $(srcdir)/xmlloader.cpp $(srcdir)/xspfplaylist.cpp $(srcdir)/editfilterdialog.cpp Options1.cpp Options2.cpp Options4.cpp Options5.cpp Options7.cpp Options8.cpp dbsetup.cpp deletedialogbase.cpp firstrunwizard.cpp newdynamic.cpp organizecollectiondialog.cpp podcastsettingsbase.cpp scriptmanagerbase.cpp tagdialogbase.cpp tagguesserconfigdialog.cpp trackpickerdialogbase.cpp playlistbrowser.moc browserbar.moc statistics.moc firstrunwizard.moc hintlineedit.moc moodbar.moc mediabrowser.moc trackpickerdialogbase.moc tagguesserconfigdialog.moc Options2.moc app.moc refreshimages.moc devicemanager.moc Options4.moc prettypopupmenu.moc deletedialogbase.moc Options5.moc Options7.moc transferdialog.moc editfilterdialog.moc metabundlesaver.moc starmanager.moc socketserver.moc playlistselection.moc scancontroller.moc deviceconfiguredialog.moc collectiondb.moc equalizerpresetmanager.moc xmlloader_p.moc tagdialogbase.moc multitabbar.moc multitabbar_p.moc scriptmanagerbase.moc cuefile.moc Options8.moc mediadevicemanager.moc deletedialog.moc ktrm.moc directorylist.moc mediumpluginmanager.moc newdynamic.moc enginecontroller.moc tagdialog.moc dbsetup.moc collectionbrowser.moc xmlloader.moc contextbrowser.moc podcastsettingsbase.moc playlistbrowseritem.moc organizecollectiondialog.moc smartplaylisteditor.moc htmlview.moc mydiroperator.moc podcastsettings.moc mountpointmanager.moc actionclasses.moc filebrowser.moc columnlist.moc Options1.moc scrobbler.moc osd.moc scriptmanager.moc threadmanager.moc configdialog.moc equalizersetup.moc playlistwindow.moc tooltip.moc tracktooltip.moc clicklineedit.moc playlistloader.moc queuemanager.moc covermanager.moc playlist.moc trackpickerdialog.moc lastfm.moc playerwindow.moc coverfetcher.moc enginebase.moc pixmapviewer.moc sliderwidget.moc
90 +libamarok_la.all_cpp.cpp: $(srcdir)/Makefile.in $(srcdir)/actionclasses.cpp $(srcdir)/app.cpp $(srcdir)/atomicstring.cpp $(srcdir)/atomicurl.cpp $(srcdir)/browserbar.cpp $(srcdir)/clicklineedit.cpp $(srcdir)/collectionbrowser.cpp $(srcdir)/collectiondb.cpp $(srcdir)/columnlist.cpp $(srcdir)/configdialog.cpp $(srcdir)/contextbrowser.cpp $(srcdir)/coverfetcher.cpp $(srcdir)/covermanager.cpp $(srcdir)/cuefile.cpp $(srcdir)/deletedialog.cpp $(srcdir)/deviceconfiguredialog.cpp $(srcdir)/devicemanager.cpp $(srcdir)/directorylist.cpp $(srcdir)/dynamicmode.cpp $(srcdir)/enginebase.cpp $(srcdir)/enginecontroller.cpp $(srcdir)/engineobserver.cpp $(srcdir)/equalizergraph.cpp $(srcdir)/equalizerpresetmanager.cpp $(srcdir)/equalizersetup.cpp $(srcdir)/expression.cpp $(srcdir)/fht.cpp $(srcdir)/filebrowser.cpp $(srcdir)/hintlineedit.cpp $(srcdir)/htmlview.cpp $(srcdir)/iconloader.cpp $(srcdir)/k3bexporter.cpp $(srcdir)/kbookmarkhandler.cpp $(srcdir)/ktrm.cpp $(srcdir)/lastfm.cpp $(srcdir)/mediabrowser.cpp $(srcdir)/mediadevicemanager.cpp $(srcdir)/medium.cpp $(srcdir)/mediumpluginmanager.cpp $(srcdir)/metabundle.cpp $(srcdir)/metabundlesaver.cpp $(srcdir)/moodbar.cpp $(srcdir)/mountpointmanager.cpp $(srcdir)/multitabbar.cpp $(srcdir)/mydiroperator.cpp $(srcdir)/osd.cpp $(srcdir)/pixmapviewer.cpp $(srcdir)/playerwindow.cpp $(srcdir)/playlist.cpp $(srcdir)/playlistbrowser.cpp $(srcdir)/playlistbrowseritem.cpp $(srcdir)/playlistitem.cpp $(srcdir)/playlistloader.cpp $(srcdir)/playlistselection.cpp $(srcdir)/playlistwindow.cpp $(srcdir)/pluginmanager.cpp $(srcdir)/podcastsettings.cpp $(srcdir)/prettypopupmenu.cpp $(srcdir)/queuemanager.cpp $(srcdir)/scancontroller.cpp $(srcdir)/scriptmanager.cpp $(srcdir)/scrobbler.cpp $(srcdir)/sliderwidget.cpp $(srcdir)/smartplaylisteditor.cpp $(srcdir)/socketserver.cpp $(srcdir)/starmanager.cpp $(srcdir)/statistics.cpp $(srcdir)/systray.cpp $(srcdir)/tagdialog.cpp $(srcdir)/tagguesser.cpp $(srcdir)/threadmanager.cpp $(srcdir)/tooltip.cpp $(srcdir)/trackpickerdialog.cpp $(srcdir)/tracktooltip.cpp $(srcdir)/transferdialog.cpp $(srcdir)/xmlloader.cpp $(srcdir)/xspfplaylist.cpp $(srcdir)/editfilterdialog.cpp Options1.cpp Options2.cpp Options4.cpp Options5.cpp Options7.cpp Options8.cpp dbsetup.cpp deletedialogbase.cpp firstrunwizard.cpp newdynamic.cpp organizecollectiondialog.cpp podcastsettingsbase.cpp scriptmanagerbase.cpp tagdialogbase.cpp tagguesserconfigdialog.cpp trackpickerdialogbase.cpp playlistbrowser.moc browserbar.moc statistics.moc firstrunwizard.moc hintlineedit.moc moodbar.moc mediabrowser.moc trackpickerdialogbase.moc tagguesserconfigdialog.moc Options2.moc app.moc devicemanager.moc Options4.moc prettypopupmenu.moc deletedialogbase.moc Options5.moc Options7.moc transferdialog.moc editfilterdialog.moc metabundlesaver.moc starmanager.moc socketserver.moc playlistselection.moc scancontroller.moc deviceconfiguredialog.moc collectiondb.moc equalizerpresetmanager.moc xmlloader_p.moc tagdialogbase.moc multitabbar.moc multitabbar_p.moc scriptmanagerbase.moc cuefile.moc Options8.moc mediadevicemanager.moc deletedialog.moc ktrm.moc directorylist.moc mediumpluginmanager.moc newdynamic.moc enginecontroller.moc tagdialog.moc dbsetup.moc collectionbrowser.moc xmlloader.moc contextbrowser.moc podcastsettingsbase.moc playlistbrowseritem.moc organizecollectiondialog.moc smartplaylisteditor.moc htmlview.moc mydiroperator.moc podcastsettings.moc mountpointmanager.moc actionclasses.moc filebrowser.moc columnlist.moc Options1.moc scrobbler.moc osd.moc scriptmanager.moc threadmanager.moc configdialog.moc equalizersetup.moc playlistwindow.moc tooltip.moc tracktooltip.moc clicklineedit.moc playlistloader.moc queuemanager.moc covermanager.moc playlist.moc trackpickerdialog.moc lastfm.moc playerwindow.moc coverfetcher.moc enginebase.moc pixmapviewer.moc sliderwidget.moc
91 @echo 'creating libamarok_la.all_cpp.cpp ...'; \
92 rm -f libamarok_la.all_cpp.files libamarok_la.all_cpp.final; \
93 echo "#define KDE_USE_FINAL 1" >> libamarok_la.all_cpp.final; \
94 - for file in actionclasses.cpp app.cpp atomicstring.cpp atomicurl.cpp browserbar.cpp clicklineedit.cpp collectionbrowser.cpp collectiondb.cpp columnlist.cpp configdialog.cpp contextbrowser.cpp coverfetcher.cpp covermanager.cpp cuefile.cpp deletedialog.cpp deviceconfiguredialog.cpp devicemanager.cpp directorylist.cpp dynamicmode.cpp enginebase.cpp enginecontroller.cpp engineobserver.cpp equalizergraph.cpp equalizerpresetmanager.cpp equalizersetup.cpp expression.cpp fht.cpp filebrowser.cpp hintlineedit.cpp htmlview.cpp iconloader.cpp k3bexporter.cpp kbookmarkhandler.cpp ktrm.cpp lastfm.cpp mediabrowser.cpp mediadevicemanager.cpp medium.cpp mediumpluginmanager.cpp metabundle.cpp metabundlesaver.cpp moodbar.cpp mountpointmanager.cpp multitabbar.cpp mydiroperator.cpp osd.cpp pixmapviewer.cpp playerwindow.cpp playlist.cpp playlistbrowser.cpp playlistbrowseritem.cpp playlistitem.cpp playlistloader.cpp playlistselection.cpp playlistwindow.cpp pluginmanager.cpp podcastsettings.cpp prettypopupmenu.cpp queuemanager.cpp refreshimages.cpp scancontroller.cpp scriptmanager.cpp scrobbler.cpp sliderwidget.cpp smartplaylisteditor.cpp socketserver.cpp starmanager.cpp statistics.cpp systray.cpp tagdialog.cpp tagguesser.cpp threadmanager.cpp tooltip.cpp trackpickerdialog.cpp tracktooltip.cpp transferdialog.cpp xmlloader.cpp xspfplaylist.cpp editfilterdialog.cpp Options1.cpp Options2.cpp Options4.cpp Options5.cpp Options7.cpp Options8.cpp dbsetup.cpp deletedialogbase.cpp firstrunwizard.cpp newdynamic.cpp organizecollectiondialog.cpp podcastsettingsbase.cpp scriptmanagerbase.cpp tagdialogbase.cpp tagguesserconfigdialog.cpp trackpickerdialogbase.cpp ; do \
95 + for file in actionclasses.cpp app.cpp atomicstring.cpp atomicurl.cpp browserbar.cpp clicklineedit.cpp collectionbrowser.cpp collectiondb.cpp columnlist.cpp configdialog.cpp contextbrowser.cpp coverfetcher.cpp covermanager.cpp cuefile.cpp deletedialog.cpp deviceconfiguredialog.cpp devicemanager.cpp directorylist.cpp dynamicmode.cpp enginebase.cpp enginecontroller.cpp engineobserver.cpp equalizergraph.cpp equalizerpresetmanager.cpp equalizersetup.cpp expression.cpp fht.cpp filebrowser.cpp hintlineedit.cpp htmlview.cpp iconloader.cpp k3bexporter.cpp kbookmarkhandler.cpp ktrm.cpp lastfm.cpp mediabrowser.cpp mediadevicemanager.cpp medium.cpp mediumpluginmanager.cpp metabundle.cpp metabundlesaver.cpp moodbar.cpp mountpointmanager.cpp multitabbar.cpp mydiroperator.cpp osd.cpp pixmapviewer.cpp playerwindow.cpp playlist.cpp playlistbrowser.cpp playlistbrowseritem.cpp playlistitem.cpp playlistloader.cpp playlistselection.cpp playlistwindow.cpp pluginmanager.cpp podcastsettings.cpp prettypopupmenu.cpp queuemanager.cpp scancontroller.cpp scriptmanager.cpp scrobbler.cpp sliderwidget.cpp smartplaylisteditor.cpp socketserver.cpp starmanager.cpp statistics.cpp systray.cpp tagdialog.cpp tagguesser.cpp threadmanager.cpp tooltip.cpp trackpickerdialog.cpp tracktooltip.cpp transferdialog.cpp xmlloader.cpp xspfplaylist.cpp editfilterdialog.cpp Options1.cpp Options2.cpp Options4.cpp Options5.cpp Options7.cpp Options8.cpp dbsetup.cpp deletedialogbase.cpp firstrunwizard.cpp newdynamic.cpp organizecollectiondialog.cpp podcastsettingsbase.cpp scriptmanagerbase.cpp tagdialogbase.cpp tagguesserconfigdialog.cpp trackpickerdialogbase.cpp ; do \
96 echo "#include \"$$file\"" >> libamarok_la.all_cpp.files; \
97 test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> libamarok_la.all_cpp.final; \
100 $(srcdir)/covermanager.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
101 deletedialog.lo: deletedialog.moc
102 mydiroperator.o: mydiroperator.moc
103 -refreshimages.lo: refreshimages.moc
104 $(srcdir)/multitabbar.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
105 equalizerpresetmanager.lo: equalizerpresetmanager.moc
107 @@ -2155,7 +2144,6 @@
108 $(srcdir)/transferdialog.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
109 $(srcdir)/prettypopupmenu.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
110 enginecontroller.o: enginecontroller.moc
111 -refreshimages.o: refreshimages.moc
112 scrobbler.o: scrobbler.moc
113 podcastsettings.lo: podcastsettings.moc
114 collectionbrowser.o: collectionbrowser.moc
115 @@ -2296,7 +2284,6 @@
116 mountpointmanager.o: mountpointmanager.moc
117 $(srcdir)/Options1.ui.h: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
118 cuefile.lo: cuefile.moc
119 -$(srcdir)/refreshimages.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
120 browserbar.o: browserbar.moc
121 $(srcdir)/mediadevicemanager.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
122 $(srcdir)/playlistbrowseritem.cpp: Options1.h Options2.h Options4.h Options5.h Options7.h Options8.h dbsetup.h deletedialogbase.h firstrunwizard.h newdynamic.h organizecollectiondialog.h podcastsettingsbase.h scriptmanagerbase.h tagdialogbase.h tagguesserconfigdialog.h trackpickerdialogbase.h
123 diff -urN amarok-1.4.10.orig/amarok/src/app.cpp amarok-1.4.10/amarok/src/app.cpp
124 --- amarok-1.4.10.orig/amarok/src/app.cpp 2009-08-22 11:38:20.442735663 -0400
125 +++ amarok-1.4.10/amarok/src/app.cpp 2009-08-22 13:22:21.017638995 -0400
127 #include "playlistbrowser.h"
128 #include "playlistwindow.h"
129 #include "pluginmanager.h"
130 -#include "refreshimages.h"
131 #include "scriptmanager.h"
132 #include "scrobbler.h"
133 #include "statusbar.h"
134 diff -urN amarok-1.4.10.orig/amarok/src/collectionbrowser.cpp amarok-1.4.10/amarok/src/collectionbrowser.cpp
135 --- amarok-1.4.10.orig/amarok/src/collectionbrowser.cpp 2009-08-22 11:38:19.648775016 -0400
136 +++ amarok-1.4.10/amarok/src/collectionbrowser.cpp 2009-08-22 13:49:11.268351838 -0400
137 @@ -1471,7 +1471,7 @@
139 if( (cat == IdAlbum || cat == IdVisYearAlbum) && siblingSelection.count() == 1 ) // cover fetch isn't multiselection capable
141 - menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch Cover From amazon.%1" ).arg( CoverManager::amazonTld() ), this, SLOT( fetchCover() ), 0, FETCH );
142 + menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch Cover From last.fm" ), this, SLOT( fetchCover() ), 0, FETCH );
143 #ifndef AMAZON_SUPPORT
144 menu.setItemEnabled( FETCH, false );
146 diff -urN amarok-1.4.10.orig/amarok/src/collectiondb.cpp amarok-1.4.10/amarok/src/collectiondb.cpp
147 --- amarok-1.4.10.orig/amarok/src/collectiondb.cpp 2009-08-22 11:38:20.439736108 -0400
148 +++ amarok-1.4.10/amarok/src/collectiondb.cpp 2009-08-22 13:44:46.547974864 -0400
149 @@ -1029,13 +1029,6 @@
151 CollectionDB::createPersistentTables()
153 - // create amazon table
154 - query( "CREATE TABLE amazon ( "
155 - "asin " + textColumnType(20) + ", "
156 - "locale " + textColumnType(2) + ", "
157 - "filename " + exactTextColumnType(33) + ", "
158 - "refetchdate INTEGER );" );
160 // create lyrics table
161 query( QString( "CREATE TABLE lyrics ("
162 "url " + exactTextColumnType() + ", "
163 @@ -1076,13 +1069,6 @@
165 CollectionDB::createPersistentTablesV12()
167 - // create amazon table
168 - query( "CREATE TABLE amazon ( "
169 - "asin " + textColumnType(20) + ", "
170 - "locale " + textColumnType(2) + ", "
171 - "filename " + textColumnType(33) + ", "
172 - "refetchdate INTEGER );" );
174 // create lyrics table
175 query( QString( "CREATE TABLE lyrics ("
176 "url " + textColumnType() + ", "
177 @@ -1110,13 +1096,6 @@
178 const QString a( temp ? "TEMPORARY" : "" );
179 const QString b( temp ? "_fix" : "" );
181 - // create amazon table
182 - query( QString( "CREATE %1 TABLE amazon%2 ( "
183 - "asin " + textColumnType(20) + ", "
184 - "locale " + textColumnType(2) + ", "
185 - "filename " + exactTextColumnType(33) + ", "
186 - "refetchdate INTEGER );" ).arg( a,b ) );
188 // create lyrics table
189 query( QString( "CREATE %1 TABLE lyrics%2 ("
190 "url " + exactTextColumnType() + ", "
191 @@ -1274,7 +1253,6 @@
193 CollectionDB::dropPersistentTables()
195 - query( "DROP TABLE amazon;" );
196 query( "DROP TABLE lyrics;" );
197 query( "DROP TABLE playlists;" );
198 query( "DROP TABLE tags_labels;" );
199 @@ -1284,7 +1262,6 @@
201 CollectionDB::dropPersistentTablesV14()
203 - query( "DROP TABLE amazon;" );
204 query( "DROP TABLE lyrics;" );
205 query( "DROP TABLE label;" );
206 query( "DROP TABLE playlists;" );
207 @@ -1865,6 +1842,7 @@
209 CollectionDB::setAlbumImage( const QString& artist, const QString& album, const KURL& url )
211 + debug() << url << endl;
213 bool success = setAlbumImage( artist, album, fetchImage(url, tmpFile) );
214 KIO::NetAccess::removeTempFile( tmpFile ); //only removes file if it was created with NetAccess
215 @@ -1873,7 +1851,7 @@
219 -CollectionDB::setAlbumImage( const QString& artist, const QString& album, QImage img, const QString& amazonUrl, const QString& asin )
220 +CollectionDB::setAlbumImage( const QString& artist, const QString& album, QImage img )
222 //show a wait cursor for the duration
223 Amarok::OverrideCursor keep;
224 @@ -1885,10 +1863,6 @@
225 removeAlbumImage( artist_, album );
227 QCString key = md5sum( artist_, album );
228 - newAmazonReloadDate(asin, AmarokConfig::amazonLocale(), key);
229 - // Save Amazon product page URL as embedded string, for later retreival
230 - if ( !amazonUrl.isEmpty() )
231 - img.setText( "amazon-url", 0, amazonUrl );
233 const bool b = img.save( largeCoverDir().filePath( key ), "PNG");
234 emit coverChanged( artist_, album );
235 @@ -2313,7 +2287,6 @@
237 QCString widthKey = "*@";
238 QCString key = md5sum( artist, album );
239 - query( "DELETE FROM amazon WHERE filename='" + key + '\'' );
241 // remove scaled versions of images (and add the asterisk for the shadow-caches)
242 QStringList scaledList = cacheCoverDir().entryList( widthKey + key + '*' );
243 @@ -4071,9 +4044,9 @@
245 if( !QFile::exists(path + "/.directory") && !cover.endsWith( "nocover.png" ) )
247 - //QPixmap thumb; //Not amazon nice.
248 - //if ( thumb.load( cover ) ){
249 - //thumb.save(path + "/.front.png", "PNG", -1 ); //hide files
250 + QPixmap thumb; //Not amazon nice.
251 + if ( thumb.load( cover ) ){
252 + thumb.save(path + "/folder.png", "PNG", -1 );
254 KSimpleConfig config(path + "/.directory");
255 config.setGroup("Desktop Entry");
256 @@ -4083,7 +4056,7 @@
257 config.writeEntry( "Icon", cover );
260 - //} //Not amazon nice.
261 + } //Not amazon nice.
265 @@ -4668,39 +4641,6 @@
269 -void CollectionDB::removeInvalidAmazonInfo( const QString& md5sum )
271 - query( QString( "DELETE FROM amazon WHERE filename='%1'" ).arg( md5sum ) );
274 -void CollectionDB::newAmazonReloadDate( const QString& asin, const QString& locale, const QString& md5sum)
276 - QStringList values = query(QString("SELECT filename FROM amazon WHERE filename = '%1'")
278 - if(values.count() > 0)
280 - query( QString("UPDATE amazon SET asin = '%1', locale = '%2', refetchdate = '%3' WHERE filename = '%4'")
283 - .arg(QDateTime::currentDateTime().addDays(80).toTime_t())
288 - insert( QString( "INSERT INTO amazon ( asin, locale, filename, refetchdate ) VALUES ( '%1', '%2', '%3', '%4');" )
292 - .arg(QDateTime::currentDateTime().addDays(80).toTime_t()), NULL );
296 -QStringList CollectionDB::staleImages()
298 - return query(QString("SELECT asin, locale, filename FROM amazon WHERE refetchdate < %1 ;")
299 - .arg(QDateTime::currentDateTime().toTime_t() ));
303 CollectionDB::applySettings()
305 @@ -4989,7 +4929,7 @@
309 - setAlbumImage( fetcher->artist(), fetcher->album(), fetcher->image(), fetcher->amazonURL(), fetcher->asin() );
310 + setAlbumImage( fetcher->artist(), fetcher->album(), fetcher->image() );
311 emit coverFetched( fetcher->artist(), fetcher->album() );
314 @@ -5646,12 +5586,10 @@
315 if ( PersistentVersion.toInt() < 15 )
317 createPersistentTablesV14( true );
318 - query( "INSERT INTO amazon_fix SELECT asin,locale,filename,refetchdate FROM amazon;" );
319 query( "INSERT INTO lyrics_fix SELECT url,deviceid,lyrics FROM lyrics;" );
320 query( "INSERT INTO playlists_fix SELECT playlist,url,tracknum FROM playlists;" );
321 dropPersistentTablesV14();
322 createPersistentTablesV14( false );
323 - query( "INSERT INTO amazon SELECT * FROM amazon_fix;" );
324 query( "INSERT INTO lyrics SELECT * FROM lyrics_fix;" );
325 query( "INSERT INTO playlists SELECT * FROM playlists_fix;" );
327 diff -urN amarok-1.4.10.orig/amarok/src/collectiondb.h amarok-1.4.10/amarok/src/collectiondb.h
328 --- amarok-1.4.10.orig/amarok/src/collectiondb.h 2009-08-22 11:38:19.663776347 -0400
329 +++ amarok-1.4.10/amarok/src/collectiondb.h 2009-08-22 12:37:54.798174576 -0400
331 /** Saves images located on the user's filesystem */
332 bool setAlbumImage( const QString& artist, const QString& album, const KURL& url );
333 /** Saves images obtained from CoverFetcher */
334 - bool setAlbumImage( const QString& artist, const QString& album, QImage img, const QString& amazonUrl = QString::null, const QString& asin = QString::null );
335 + bool setAlbumImage( const QString& artist, const QString& album, QImage img );
337 QString findAmazonImage( const QString &artist, const QString &album, const uint width = 1 );
338 QString findDirectoryImage( const QString& artist, const QString& album, uint width = 0 );
340 void setLyrics( const QString& url, const QString& lyrics, const QString &uniqueid = QString::null );
341 QString getLyrics( const QString& url );
343 - /** Remove from the amazon table the item with the specified md5sum **/
344 - void removeInvalidAmazonInfo( const QString& md5sum );
345 - void newAmazonReloadDate( const QString& asin, const QString& locale, const QString& md5sum );
346 - QStringList staleImages();
348 DbConnection::DbConnectionType getDbConnectionType() const { return m_dbConnType; }
350 void releasePreviousConnection(QThread *currThread);
351 diff -urN amarok-1.4.10.orig/amarok/src/contextbrowser.cpp amarok-1.4.10/amarok/src/contextbrowser.cpp
352 --- amarok-1.4.10.orig/amarok/src/contextbrowser.cpp 2009-08-22 11:38:20.437735462 -0400
353 +++ amarok-1.4.10/amarok/src/contextbrowser.cpp 2009-08-22 13:51:47.817348629 -0400
355 QString albumImageTooltip( const QString &albumImage, int size )
357 if ( albumImage == CollectionDB::instance()->notAvailCover( false, size ) )
358 - return escapeHTMLAttr( i18n( "Click to fetch cover from amazon.%1, right-click for menu." ).arg( CoverManager::amazonTld() ) );
359 + return escapeHTMLAttr( i18n( "Click to fetch cover from last.fm, right-click for menu." ) );
361 - return escapeHTMLAttr( i18n( "Click for information from Amazon, right-click for menu." ) );
362 + return escapeHTMLAttr( i18n( "Right-click for menu." ) );
367 ScriptManager::instance()->runScript( url.path() );
370 - // When left-clicking on cover image, open browser with amazon site
371 - else if ( url.protocol() == "fetchcover" )
373 - QString albumPath = CollectionDB::instance()->albumImage(artist, album, false, 0 );
374 - if ( albumPath == CollectionDB::instance()->notAvailCover( false, 0 ) )
376 - CollectionDB::instance()->fetchCover( this, artist, album, false );
380 - QImage img( albumPath );
381 - const QString amazonUrl = img.text( "amazon-url" );
383 - if ( amazonUrl.isEmpty() )
384 - KMessageBox::information( this, i18n( "<p>There is no product information available for this image.<p>Right-click on image for menu." ) );
386 - Amarok::invokeBrowser( amazonUrl );
389 /* open konqueror with musicbrainz search result for artist-album */
390 else if ( url.protocol() == "musicbrainz" )
392 diff -urN amarok-1.4.10.orig/amarok/src/coverfetcher.cpp amarok-1.4.10/amarok/src/coverfetcher.cpp
393 --- amarok-1.4.10.orig/amarok/src/coverfetcher.cpp 2009-08-22 11:38:20.561728744 -0400
394 +++ amarok-1.4.10/amarok/src/coverfetcher.cpp 2009-08-22 14:24:39.841020123 -0400
401 #include <kapplication.h>
402 #include <kcombobox.h>
404 menu.insertTitle( i18n( "Cover Image" ) );
406 menu.insertItem( SmallIconSet( Amarok::icon( "zoom" ) ), i18n( "&Show Fullsize" ), SHOW );
407 - menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch From amazon.%1" ).arg( CoverManager::amazonTld() ), FETCH );
408 + menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch From last.fm" ), FETCH );
409 menu.insertItem( SmallIconSet( Amarok::icon( "files" ) ), i18n( "Set &Custom Cover" ), CUSTOM );
410 bool disable = !album.isEmpty(); // disable setting covers for unknown albums
411 menu.setItemEnabled( FETCH, disable );
413 : QObject( parent, "CoverFetcher" )
421 @@ -193,45 +194,40 @@
425 - // Static license Key. Thanks hydrogen ;-)
426 - const QString LICENSE( "11ZKJS8X1ETSTJ6MT802" );
429 - m_coverAmazonUrls.clear();
430 - m_coverAsins.clear();
432 m_coverNames.clear();
433 m_xml = QString::null;
437 - if ( m_queries.isEmpty() ) {
438 - debug() << "m_queries is empty" << endl;
439 + QString url = "http://ws.audioscrobbler.com/2.0/";
440 + url.append( "?method=album.getinfo" );
441 + url.append( "&api_key=402d3ca8e9bc9d3cf9b85e1202944ca5" );
445 + if ( !m_queries.isEmpty() ) {
446 + QStringList query = QStringList::split( " - ", m_queries[0] );
447 + q_artist = query[0]; q_album = query[1];
449 + else if ( m_album.isEmpty() ) {
450 + debug() << "m_album is empty" << endl;
451 finishWithError( i18n("No cover found") );
454 - QString query = m_queries.front();
455 - m_queries.pop_front();
457 - // '&' breaks searching
459 + else if ( m_artist.isEmpty() ) {
460 + debug() << "m_artist is empty" << endl;
461 + finishWithError( i18n("No cover found") );
465 + q_artist = m_artist;
467 + QUrl::encode( q_album );
468 + url.append( "&album=" ); url.append( q_album );
469 + QUrl::encode( q_artist );
470 + url.append( "&artist=" ); url.append( q_artist );
472 - QString locale = AmarokConfig::amazonLocale();
475 - if( locale == "us" )
477 - else if( locale =="uk" )
482 - int mibenum = 106; // utf-8
485 - url = "http://ecs.amazonaws." + tld
486 - + "/onca/xml?Service=AWSECommerceService&Version=2007-10-29&Operation=ItemSearch&AssociateTag=webservices-20&AWSAccessKeyId=" + LICENSE
487 - + "&Keywords=" + KURL::encode_string_no_slash( query, mibenum )
488 - + "&SearchIndex=Music&ResponseGroup=Small,Images";
489 debug() << url << endl;
491 KIO::TransferJob* job = KIO::storedGet( url, false, false );
493 // NOTE: job can become 0 when this method is called from attemptAnotherFetch()
495 if( job && job->error() ) {
496 - finishWithError( i18n("There was an error communicating with Amazon."), job );
497 + finishWithError( i18n("There was an error communicating with last.fm."), job );
501 @@ -263,110 +259,48 @@
504 if( !doc.setContent( m_xml ) ) {
505 - m_errors += i18n("The XML obtained from Amazon is invalid.");
506 + m_errors += i18n("The XML obtained from last.fm is invalid.");
511 - m_coverAsins.clear();
512 - m_coverAmazonUrls.clear();
514 m_coverNames.clear();
516 - // the url for the Amazon product info page
517 - const QDomNodeList list = doc.documentElement().namedItem( "Items" ).childNodes();
518 + const QDomNodeList list = doc.documentElement().namedItem( "album" ).childNodes();
520 - for(int i = 0; i < list.count(); i++ )
524 + case 0: size = "small"; break;
525 + case 1: size = "medium"; break;
526 + case 2: size = "large"; break;
527 + default: size = "extralarge"; break;
530 + for ( int i = 0; i < list.count(); i++ )
532 QDomNode n = list.item( i );
533 - if( n.isElement() && n.nodeName() == "IsValid" )
534 + if ( n.nodeName() == "image" )
536 - if( n.toElement().text() == "False" )
538 - warning() << "The XML Is Invalid!";
542 - else if( list.item( i ).nodeName() == "Item" )
544 - const QDomNode node = list.item( i );
545 - parseItemNode( node );
548 - attemptAnotherFetch();
551 -void CoverFetcher::parseItemNode( const QDomNode &node )
553 - QDomNode it = node.firstChild();
554 + QDomNode node = list.item( i );
559 - case 0: size = "Small"; break;
560 - case 1: size = "Medium"; break;
561 - default: size = "Large"; break;
565 - while ( !it.isNull() ) {
566 - if ( it.isElement() ) {
567 - QDomElement e = it.toElement();
568 - if(e.tagName()=="ASIN")
571 - m_coverAsins += m_asin;
573 - else if(e.tagName() == "DetailPageURL" )
575 - m_amazonURL = e.text();
576 - m_coverAmazonUrls += m_amazonURL;
578 - else if( e.tagName() == size )
580 - QDomNode subIt = e.firstChild();
581 - while( !subIt.isNull() )
583 - if( subIt.isElement() )
585 - QDomElement subE = subIt.toElement();
586 - if( subE.tagName() == "URL" )
588 - const QString coverUrl = subE.text();
589 - m_coverUrls += coverUrl;
593 - subIt = subIt.nextSibling();
596 - else if( e.tagName() == "ItemAttributes" )
598 - QDomNodeList nodes = e.childNodes();
602 - for( int i = 0; i < nodes.count(); i++ )
604 - iter = nodes.item( i );
606 - if( iter.isElement() )
608 - if( iter.nodeName() == "Artist" )
610 - artist = iter.toElement().text();
612 - else if( iter.nodeName() == "Title" )
614 - album = iter.toElement().text();
617 + if ( node.hasAttributes() ) {
618 + QString imageSize = node.attributes().namedItem( "size" ).nodeValue();
619 + if ( imageSize == size && node.isElement() ) {
620 + coverUrl = node.toElement().text();
621 + // remove the following line if you enjoy spending half an
622 + // hour debugging seemingly inexplicible crashes
623 + m_coverNames += QString( m_artist + " - " + m_album);
624 + m_coverUrls += coverUrl;
626 - m_coverNames += QString( artist + " - " + album );
629 - it = it.nextSibling();
632 + if ( coverUrl.isEmpty() )
633 + return getUserQuery( i18n("You have seen all the covers last.fm returned using the query below. Perhaps you can refine it:") );
634 + attemptAnotherFetch();
640 m_image.loadFromData( static_cast<KIO::StoredTransferJob*>( job )->data() );
642 - if( m_image.width() <= 1 ) {
643 - //Amazon seems to offer images of size 1x1 sometimes
644 - //Amazon has nothing to offer us for the requested image size
645 - m_errors += i18n("The cover-data produced an invalid image.");
646 - attemptAnotherFetch();
649 - else if( m_userCanEditQuery )
650 + if( m_userCanEditQuery )
651 //yay! image found :)
652 //lets see if the user wants it
657 if( !m_coverUrls.isEmpty() ) {
658 - // Amazon suggested some more cover URLs to try before we
659 + // last.fm suggested some more cover URLs to try before we
660 // try a different query
662 KIO::TransferJob* job = KIO::storedGet( KURL(m_coverUrls.front()), false, false );
665 m_currentCoverName = m_coverNames.front();
666 m_coverNames.pop_front();
668 - m_amazonURL = m_coverAmazonUrls.front();
669 - m_coverAmazonUrls.pop_front();
671 - m_asin = m_coverAsins.front();
672 - m_coverAsins.pop_front();
675 else if( !m_xml.isEmpty() && m_size > 0 ) {
677 else if( m_userCanEditQuery ) {
678 // we have exhausted all the predetermined queries
679 // so lets let the user give it a try
680 - getUserQuery( i18n("You have seen all the covers Amazon returned using the query below. Perhaps you can refine it:") );
681 - m_coverAmazonUrls.clear();
682 - m_coverAsins.clear();
683 + getUserQuery( i18n("You have seen all the covers last.fm returned using the query below. Perhaps you can refine it:") );
685 m_coverNames.clear();
688 EditSearchDialog( QWidget* parent, const QString &text, const QString &keyword, CoverFetcher *fetcher )
691 - setCaption( i18n( "Amazon Query Editor" ) );
693 - // amazon combo box
694 - KComboBox* amazonLocale = new KComboBox( this );
695 - amazonLocale->insertItem( i18n("International"), CoverFetcher::International );
696 - amazonLocale->insertItem( i18n("Canada"), CoverFetcher::Canada );
697 - amazonLocale->insertItem( i18n("France"), CoverFetcher::France );
698 - amazonLocale->insertItem( i18n("Germany"), CoverFetcher::Germany );
699 - amazonLocale->insertItem( i18n("Japan"), CoverFetcher::Japan);
700 - amazonLocale->insertItem( i18n("United Kingdom"), CoverFetcher::UK );
701 - if( CoverManager::instance() )
702 - connect( amazonLocale, SIGNAL( activated(int) ),
703 - CoverManager::instance(), SLOT( changeLocale(int) ) );
705 - connect( amazonLocale, SIGNAL( activated(int) ),
706 - fetcher, SLOT( changeLocale(int) ) );
707 - QHBoxLayout *hbox1 = new QHBoxLayout( 8 );
708 - hbox1->addWidget( new QLabel( i18n( "Amazon Locale: " ), this ) );
709 - hbox1->addWidget( amazonLocale );
711 - int currentLocale = CoverFetcher::localeStringToID( AmarokConfig::amazonLocale() );
712 - amazonLocale->setCurrentItem( currentLocale );
713 + setCaption( i18n( "Query Editor" ) );
715 KPushButton* cancelButton = new KPushButton( KStdGuiItem::cancel(), this );
716 KPushButton* searchButton = new KPushButton( i18n("&Search"), this );
718 hbox2->addWidget( cancelButton );
720 QVBoxLayout *vbox = new QVBoxLayout( this, 8, 8 );
721 - vbox->addLayout( hbox1 );
722 vbox->addWidget( new QLabel( "<qt>" + text, this ) );
723 vbox->addWidget( new KLineEdit( keyword, this, "Query" ) );
724 vbox->addLayout( hbox2 );
725 @@ -511,54 +408,12 @@
726 QString query() { return static_cast<KLineEdit*>(child( "Query" ))->text(); }
730 -CoverFetcher::localeIDToString( int id )//static
734 - case International:
752 -CoverFetcher::localeStringToID( const QString &s )
754 - int id = International;
755 - if( s == "fr" ) id = France;
756 - else if( s == "de" ) id = Germany;
757 - else if( s == "jp" ) id = Japan;
758 - else if( s == "uk" ) id = UK;
759 - else if( s == "ca" ) id = Canada;
765 -CoverFetcher::changeLocale( int id )//SLOT
767 - QString locale = localeIDToString( id );
768 - AmarokConfig::setAmazonLocale( locale );
773 CoverFetcher::getUserQuery( QString explanation )
775 if( explanation.isEmpty() )
776 - explanation = i18n("Ask Amazon for covers using this query:");
777 + explanation = i18n("Ask last.fm for covers using this query:");
779 EditSearchDialog dialog(
780 static_cast<QWidget*>( parent() ),
783 case 1000: //showQueryEditor()
785 - m_coverAmazonUrls.clear();
786 - m_coverAsins.clear();
788 m_coverNames.clear();
790 diff -urN amarok-1.4.10.orig/amarok/src/coverfetcher.h amarok-1.4.10/amarok/src/coverfetcher.h
791 --- amarok-1.4.10.orig/amarok/src/coverfetcher.h 2009-08-22 11:38:19.643818604 -0400
792 +++ amarok-1.4.10/amarok/src/coverfetcher.h 2009-08-22 13:46:21.224819113 -0400
795 QString artist() const { return m_artist; }
796 QString album() const { return m_album; }
797 - QString amazonURL() const { return m_amazonURL; }
798 - QString asin() const { return m_asin; }
799 QImage image() const { return m_image; }
801 bool wasError() const { return !m_success; }
802 QStringList errors() const { return m_errors; }
804 - enum Locale { International=0, France, Germany, Japan, UK, Canada };
805 - static QString localeIDToString( int id );
806 - static int localeStringToID( const QString &locale );
809 /// The CollectionDB can get the cover information using the pointer
810 void result( CoverFetcher* );
813 void finishedXmlFetch( KIO::Job* job );
814 void finishedImageFetch( KIO::Job* job );
815 - void changeLocale( int id );
818 const QString m_artist;
820 QString m_userQuery; /// the query from the query edit dialog
823 - QString m_amazonURL;
827 QStringList m_queries;
828 - QStringList m_coverAsins;
829 - QStringList m_coverAmazonUrls;
830 QStringList m_coverUrls;
831 QStringList m_coverNames;
832 QString m_currentCoverName;
834 /// The fetch was successful!
837 - /// Parse one <Item> QDomNode and append results.
838 - void parseItemNode( const QDomNode &node );
840 /// The fetch failed, finish up and log an error message
841 void finishWithError( const QString &message, KIO::Job *job = 0 );
843 diff -urN amarok-1.4.10.orig/amarok/src/covermanager.cpp amarok-1.4.10/amarok/src/covermanager.cpp
844 --- amarok-1.4.10.orig/amarok/src/covermanager.cpp 2009-08-22 11:38:19.646776054 -0400
845 +++ amarok-1.4.10/amarok/src/covermanager.cpp 2009-08-22 13:48:38.643794369 -0400
846 @@ -163,29 +163,11 @@
847 m_viewMenu->setItemChecked( AllAlbums, true );
848 connect( m_viewMenu, SIGNAL( activated(int) ), SLOT( changeView(int) ) );
850 - #ifdef AMAZON_SUPPORT
851 - // amazon locale menu
852 - m_amazonLocaleMenu = new KPopupMenu( this );
853 - m_amazonLocaleMenu->insertItem( i18n("International"), CoverFetcher::International );
854 - m_amazonLocaleMenu->insertItem( i18n("Canada"), CoverFetcher::Canada );
855 - m_amazonLocaleMenu->insertItem( i18n("France"), CoverFetcher::France );
856 - m_amazonLocaleMenu->insertItem( i18n("Germany"), CoverFetcher::Germany );
857 - m_amazonLocaleMenu->insertItem( i18n("Japan"), CoverFetcher::Japan);
858 - m_amazonLocaleMenu->insertItem( i18n("United Kingdom"), CoverFetcher::UK );
859 - connect( m_amazonLocaleMenu, SIGNAL( activated(int) ), SLOT( changeLocale(int) ) );
862 KToolBar* toolBar = new KToolBar( hbox );
863 toolBar->setIconText( KToolBar::IconTextRight );
864 toolBar->setFrameShape( QFrame::NoFrame );
865 toolBar->insertButton( "view_choose", 1, m_viewMenu, true, i18n( "View" ) );
866 #ifdef AMAZON_SUPPORT
867 - toolBar->insertButton( "babelfish", 2, m_amazonLocaleMenu, true, i18n( "Amazon Locale" ) );
869 - QString locale = AmarokConfig::amazonLocale();
870 - m_currentLocale = CoverFetcher::localeStringToID( locale );
871 - m_amazonLocaleMenu->setItemChecked( m_currentLocale, true );
873 //fetch missing covers button
874 m_fetchButton = new KPushButton( KGuiItem( i18n("Fetch Missing Covers"), Amarok::icon( "download" ) ), hbox );
875 connect( m_fetchButton, SIGNAL(clicked()), SLOT(fetchMissingCovers()) );
880 -QString CoverManager::amazonTld() //static
882 - if (AmarokConfig::amazonLocale() == "us")
884 - else if (AmarokConfig::amazonLocale()== "jp")
886 - else if (AmarokConfig::amazonLocale() == "uk")
888 - else if (AmarokConfig::amazonLocale() == "ca")
891 - return AmarokConfig::amazonLocale();
895 void CoverManager::fetchMissingCovers() //SLOT
897 #ifdef AMAZON_SUPPORT
901 menu.insertItem( SmallIconSet( Amarok::icon( "zoom" ) ), i18n( "&Show Fullsize" ), SHOW );
902 - menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch From amazon.%1" ).arg( CoverManager::amazonTld() ), FETCH );
903 + menu.insertItem( SmallIconSet( Amarok::icon( "download" ) ), i18n( "&Fetch From last.fm" ), FETCH );
904 menu.insertItem( SmallIconSet( Amarok::icon( "files" ) ), i18n( "Set &Custom Cover" ), CUSTOM );
905 menu.insertItem( SmallIconSet( Amarok::icon( "add_playlist" ) ), i18n( "&Append to Playlist" ), APPEND );
906 menu.insertSeparator();
911 -void CoverManager::changeLocale( int id ) //SLOT
913 - QString locale = CoverFetcher::localeIDToString( id );
914 - AmarokConfig::setAmazonLocale( locale );
915 - m_amazonLocaleMenu->setItemChecked( m_currentLocale, false );
916 - m_amazonLocaleMenu->setItemChecked( id, true );
917 - m_currentLocale = id;
921 void CoverManager::coverFetched( const QString &artist, const QString &album ) //SLOT
923 diff -urN amarok-1.4.10.orig/amarok/src/covermanager.h amarok-1.4.10/amarok/src/covermanager.h
924 --- amarok-1.4.10.orig/amarok/src/covermanager.h 2009-08-22 11:38:20.558728891 -0400
925 +++ amarok-1.4.10/amarok/src/covermanager.h 2009-08-22 13:48:49.188329042 -0400
928 void setStatusText( QString text );
931 - * Return the top level domain for the current locale
933 - static QString amazonTld();
935 void updateStatusBar();
936 - void changeLocale( int id );
939 void slotArtistSelected( QListViewItem* );
941 CoverView *m_coverView;
942 ClickLineEdit *m_searchEdit;
943 KPushButton *m_fetchButton;
944 - KPopupMenu *m_amazonLocaleMenu;
945 KPopupMenu *m_viewMenu;
946 - QToolButton *m_amazonLocaleButton;
947 QToolButton *m_viewButton;
948 - int m_currentLocale;
952 diff -urN amarok-1.4.10.orig/amarok/src/refreshimages.cpp amarok-1.4.10/amarok/src/refreshimages.cpp
953 --- amarok-1.4.10.orig/amarok/src/refreshimages.cpp 2009-08-22 11:38:19.643818604 -0400
954 +++ amarok-1.4.10/amarok/src/refreshimages.cpp 1969-12-31 19:00:00.000000000 -0500
956 -// (c) 2005 Ian Monroe <ian@monroe.nu>
957 -// See COPYING file for licensing information.
959 -#define DEBUG_PREFIX "RefreshImages"
962 -#include "collectiondb.h"
964 -#include "refreshimages.h"
965 -#include "statusbar.h"
970 -#include <qobject.h>
971 -#include <qstringlist.h>
972 -#include <qvaluelist.h>
973 -#include <qvariant.h>
975 -#include <kio/job.h>
976 -#include <kio/jobclasses.h>
977 -#include <kio/scheduler.h>
979 -#include <klocale.h>
982 -RefreshImages::RefreshImages()
984 - //"SELECT asin, locale, filename FROM amazon WHERE refetchdate > %1 ;"
985 - const QStringList staleImages = CollectionDB::instance()->staleImages();
986 - QStringList::ConstIterator it = staleImages.begin();
987 - QStringList::ConstIterator end = staleImages.end();
993 - QString locale = *it;
995 - QString md5sum = *it;
996 - if ( asin.isEmpty() || locale.isEmpty() || md5sum.isEmpty() )
998 - //somehow we have entries without ASIN
999 - if ( !md5sum.isEmpty() ) //I've never seen this, just to be sure
1000 - CollectionDB::instance()->removeInvalidAmazonInfo(md5sum);
1009 - QString("http://webservices.amazon.%1/onca/xml?Service=AWSECommerceService&SubscriptionId=%2&Operation=ItemLookup&ItemId=%3&ResponseGroup=Small,Images")
1010 - .arg(localeToTLD(locale))
1011 - .arg("0RQSQ0B8CRY7VX2VF3G2") //Ian Monroe
1014 - debug() << url << endl;
1016 - KIO::TransferJob* job = KIO::storedGet( url, false, false );
1017 - KIO::Scheduler::scheduleJob( job );
1019 - //Amarok::StatusBar::instance()->newProgressOperation( job );
1020 - job->setName( md5sum.ascii() );
1021 - it++; //iterate to the next set
1023 - m_jobInfo[md5sum] = JobInfo( asin, locale, it == end );
1024 - connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( finishedXmlFetch( KIO::Job* ) ) );
1029 -RefreshImages::finishedXmlFetch( KIO::Job* xmlJob ) //SLOT
1031 - if ( xmlJob->error() )
1033 - Amarok::StatusBar::instance()->shortMessage( i18n( "There was an error communicating with Amazon." ) );
1034 - if ( m_jobInfo[ xmlJob->name() ].m_last )
1040 - KIO::StoredTransferJob* const storedJob = static_cast<KIO::StoredTransferJob*>( xmlJob );
1041 - const QString xml = QString::fromUtf8( storedJob->data().data(), storedJob->data().size() );
1044 - if ( !doc.setContent( xml ) )
1047 - QStringList imageSizes;
1048 - imageSizes << "LargeImage" << "MediumImage" << "SmallImage";
1050 - foreach( imageSizes )
1052 - QDomNode imageNode = doc.documentElement()
1053 - .namedItem( "Items" )
1054 - .namedItem( "Item" )
1055 - .namedItem( *it );
1056 - if ( !imageNode.isNull() )
1058 - imageUrl = imageNode.namedItem( "URL" ).firstChild().toText().data();
1059 - if( !imageUrl.isEmpty() )
1063 - debug() << imageUrl << endl;
1064 - KURL testUrl( imageUrl );
1065 - if( !testUrl.isValid() ) //KIO crashs on empty strings!!!
1067 - //Amazon sometimes takes down covers
1068 - CollectionDB::instance()->removeInvalidAmazonInfo(xmlJob->name());
1072 - KIO::TransferJob* imageJob = KIO::storedGet( imageUrl, false, false );
1073 - KIO::Scheduler::scheduleJob(imageJob);
1074 - //Amarok::StatusBar::instance()->newProgressOperation( imageJob );
1075 - imageJob->setName(xmlJob->name());
1076 - //get the URL of the detail page
1077 - m_jobInfo[xmlJob->name()].m_detailUrl = doc.documentElement()
1078 - .namedItem( "Items" )
1079 - .namedItem( "Item" )
1080 - .namedItem( "DetailPageURL" ).firstChild().toText().data();
1081 - connect( imageJob, SIGNAL( result(KIO::Job*) ), SLOT( finishedImageFetch(KIO::Job*) ) );
1084 -void RefreshImages::finishedImageFetch(KIO::Job* imageJob)
1086 - if( imageJob->error() ) {
1087 - Amarok::StatusBar::instance()->shortMessage(i18n("There was an error communicating with Amazon."));
1088 - if(m_jobInfo[imageJob->name()].m_last)
1094 - img.loadFromData(static_cast<KIO::StoredTransferJob*>(imageJob)->data());
1095 - img.setText( "amazon-url", 0, m_jobInfo[imageJob->name()].m_detailUrl);
1096 - img.save( Amarok::saveLocation("albumcovers/large/") + imageJob->name(), "PNG");
1098 - CollectionDB::instance()->newAmazonReloadDate( m_jobInfo[imageJob->name()].m_asin
1099 - , m_jobInfo[imageJob->name()].m_locale
1100 - , imageJob->name());
1102 - if(m_jobInfo[imageJob->name()].m_last)
1106 -QString RefreshImages::localeToTLD(const QString& locale)
1110 - else if(locale=="jp")
1112 - else if(locale=="uk")
1118 -#include "refreshimages.moc"
1119 diff -urN amarok-1.4.10.orig/amarok/src/refreshimages.h amarok-1.4.10/amarok/src/refreshimages.h
1120 --- amarok-1.4.10.orig/amarok/src/refreshimages.h 2009-08-22 11:38:19.644775619 -0400
1121 +++ amarok-1.4.10/amarok/src/refreshimages.h 1969-12-31 19:00:00.000000000 -0500
1123 -// (c) 2005 Ian Monroe <ian@monroe.nu>
1124 -// See COPYING file for licensing information.
1126 -#ifndef AMAROK_REFRESHIMAGES_H
1127 -#define AMAROK_REFRESHIMAGES_H
1129 -#include <qobject.h>
1131 - class StoredTransferJob;
1139 - JobInfo() : m_last(false) { } //for QMap
1140 - JobInfo(const QString& asin, const QString& locale, bool last) :
1141 - m_asin(asin), m_locale(locale), m_last(last) { }
1144 - QString m_detailUrl;
1148 -class RefreshImages : public QObject
1154 - void finishedXmlFetch( KIO::Job* );
1155 - void finishedImageFetch( KIO::Job* );
1157 - static QString localeToTLD(const QString& locale);
1158 - QMap<QString, JobInfo> m_jobInfo;