daapclient.h

来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 192 行

H
192
字号
/*************************************************************************** * copyright            : (C) 2006 Ian Monroe <ian@monroe.nu>              * *                        (C) 2006 Seb Ruiz <me@sebruiz.net>               * **************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#ifndef AMAROK_DAAPCLIENT_H#define AMAROK_DAAPCLIENT_H#include "daapreader/reader.h"#include "mediabrowser.h"#include "threadmanager.h"#include <kdeversion.h>#include <kdialogbase.h>#include <ktempfile.h>#define DNSSD_SUPPORT KDE_IS_VERSION(3,4,0)#if DNSSD_SUPPORT    #include <dnssd/remoteservice.h> //for DNSSD::RemoteService::Ptr#elsenamespace DNSSD {    namespace RemoteService {        class Ptr {}; //HACK Dummy class, so that daapclient.moc compiles    }}#endifnamespace DNSSD {    class ServiceBrowser;}class AddHostBase;class MediaItem;class ServerItem;class DaapServer;class KURL;class QCheckBox;class QString;class QTimer;class DaapClient : public MediaDevice{    Q_OBJECT   public:        struct ServerInfo        {            ServerInfo() : sessionId( -1 ), revisionID( 10 ) { }            int sessionId;            int revisionID;        };        DaapClient();        virtual ~DaapClient();        bool isConnected();        virtual bool needsManualConfig() { return true; }        virtual void addConfigElements   ( QWidget * /*parent*/ );        virtual void removeConfigElements( QWidget * /*parent*/ );        virtual void applyConfig();        virtual void loadConfig();        int incRevision( const QString& host );        int getSession( const QString& host );        KURL getProxyUrl( const KURL& url );        void customClicked();        bool autoConnect() { return true; }    public slots:         void passwordPrompt();    protected:         bool getCapacity( KIO::filesize_t *total, KIO::filesize_t *available );         void rmbPressed( QListViewItem* qitem, const QPoint& point, int );         bool lockDevice( bool tryOnly = false );         void unlockDevice();         bool openDevice( bool silent=false );         bool closeDevice();         void synchronizeDevice();         MediaItem* copyTrackToDevice(const MetaBundle& bundle);         MediaItem* trackExists( const MetaBundle& );         virtual int deleteItemFromDevice( MediaItem *item, int flags=DeleteTrack );   private slots:        void serverOffline( DNSSD::RemoteService::Ptr );        void foundDaap( DNSSD::RemoteService::Ptr );        void resolvedDaap( bool );        void createTree( const QString& host, Daap::SongList bundles );        void broadcastButtonToggled();   private:        ServerItem* newHost( const QString& serviceName, const QString& host, const QString& ip, const Q_INT16 port );        void downloadSongs( KURL::List urls );        QString resolve( const QString& hostname );#if DNSSD_SUPPORT        QString serverKey( const DNSSD::RemoteService* service ) const;        DNSSD::ServiceBrowser* m_browser;#endif        /// @return true if track is already in the local collection        const bool trackExistsInCollection( MetaBundle *bundle );        bool    m_connected;        QMap<QString, ServerInfo*> m_servers;        QMap<QString, ServerItem*> m_serverItemMap;        DaapServer *m_sharingServer;        QCheckBox  *m_broadcastServerCheckBox;        QCheckBox  *m_removeDuplicatesCheckBox;        bool        m_broadcastServer;        bool        m_removeDuplicates;        KToolBarButton *m_broadcastButton;        // if set to true, we don't display items that the user already has in the collection        bool        m_hideMusicOwned;};class ServerItem : public QObject, public MediaItem{    Q_OBJECT    public:        ServerItem( QListView* parent, DaapClient* client, const QString& ip, Q_UINT16 port, const QString& title, const QString& host );        ~ServerItem();        void setOpen( bool o );        void resetTitle()                     { setText( 0, m_title ); }        void unLoaded()                       { m_loaded = false; }        void setReader( Daap::Reader* reader) { m_reader = reader; }        Daap::Reader* getReader() const       { return m_reader; }        void startAnimation();        void stopAnimation();        QString key() const { return key( m_host, m_port ); }        void reset();        static QString key( const QString& host, Q_UINT16 port ) { return host + ':' + QString::number( port ); }    public slots:        void httpError( const QString& );    private slots:        void slotAnimation();    private:        DaapClient     *m_daapClient;        Daap::Reader   *m_reader;        const QString   m_ip;        const Q_UINT16  m_port;        const QString   m_title;        const QString   m_host;        bool            m_loaded;        QPixmap        *m_loading1, *m_loading2;    //icons for loading animation        QTimer          m_animationTimer;        uint            m_iconCounter;        static const int ANIMATION_INTERVAL = 250;};class DaapDownloader : public ThreadManager::Job{Q_OBJECTpublic:    DaapDownloader( KURL::List urls );    virtual bool doJob();    virtual void completeJob();private slots:    void downloadFinished( int id, bool error );    void dataReadProgress( int done, int total );    void downloadFailed( const QString &error );private:    KURL::List m_urls;    QValueList<KTempFile*> m_tempFileList;    bool m_ready;    bool m_successful;    bool m_errorOccured;};#endif /*AMAROK_DAAPCLIENT_H*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?