add mp3 and ogg torrent url info to JamendoAlbum
[amarok.git] / src / xmlloader_p.h
blob376c8233b7bfdcfacf87d3feb684821826597b3c
1 /*
2 Copyright (c) 2006 Gábor Lehel <illissius@gmail.com>
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
20 #ifndef AMAROK_XMLLOADER_P_H
21 #define AMAROK_XMLLOADER_P_H
23 #include <QApplication>
24 #include <QThread>
26 class MetaBundle::XmlLoader::ThreadedLoader: public QThread
28 Q_OBJECT
29 QObject *m_target;
30 QXmlInputSource *m_source;
32 private slots:
33 void bundleLoaded( const MetaBundle &bundle, const XmlAttributeList &attributes )
35 QApplication::postEvent( m_target, new BundleLoadedEvent( bundle, attributes ) );
38 public:
39 ThreadedLoader( QXmlInputSource *source, QObject *target ): m_target( target ), m_source( source ) { }
41 protected:
42 virtual void run()
45 XmlLoader loader;
46 connect( &loader, SIGNAL( newBundle( const MetaBundle&, const XmlAttributeList& ) ),
47 this, SLOT( bundleLoaded( const MetaBundle&, const XmlAttributeList& ) ) );
48 bool success = loader.load( m_source );
49 if( !success )
50 QApplication::postEvent( m_target, new BundleLoadedEvent( loader.m_lastError ) );
53 delete this;
57 class MetaBundle::XmlLoader::SimpleLoader: public QObject
59 Q_OBJECT
61 public:
62 BundleList bundles;
64 SimpleLoader( QXmlInputSource *source, bool *ok )
66 XmlLoader loader;
67 connect( &loader, SIGNAL( newBundle( const MetaBundle&, const XmlAttributeList& ) ),
68 this, SLOT( bundleLoaded( const MetaBundle&, const XmlAttributeList& ) ) );
69 const bool success = loader.load( source );
70 if( ok )
71 (*ok) = success;
74 private slots:
75 void bundleLoaded( const MetaBundle &bundle, const XmlAttributeList& )
77 bundles << bundle;
81 #endif