riokarmamediadevice.h

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

H
117
字号
/*************************************************************************** * copyright            : (C) 2006 Andy Kelk <andy@mopoke.co.uk>           * ***************************************************************************//*************************************************************************** *                                                                         * *   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.                                   * *                                                                         * ***************************************************************************/ /**  *  Rio Karma media device  *  @author Andy Kelk <andy@mopoke.co.uk>  *  @see http://linux-karma.sourceforge.net/  */#ifndef AMAROK_RIOKARMAMEDIADEVICE_H#define AMAROK_RIOKARMAMEDIADEVICE_H#include "mediabrowser.h"#include <qptrlist.h>#include <qmutex.h>#include "libkarma/lkarma.h"class RioKarmaMediaDevice;class RioKarmaMediaItem;class RioKarmaTrack {    friend class MediaItem;    public:        RioKarmaTrack( int Fid );        ~RioKarmaTrack();        bool                        operator==( const RioKarmaTrack &second ) const { return m_id == second.m_id; }    public:        unsigned int                id() const { return m_id; }        MetaBundle                  *bundle() { return new MetaBundle( m_bundle ); }        void                        setBundle( MetaBundle &bundle );        void                        setId( int id ) { m_id = id; }        void                        readMetaData();        void                        addItem( const RioKarmaMediaItem *item );        bool                        removeItem( const RioKarmaMediaItem *item );    private:        unsigned int                m_id;        MetaBundle                  m_bundle;        QPtrList<RioKarmaMediaItem> m_itemList;};class RioKarmaMediaItem : public MediaItem{    public:        RioKarmaMediaItem( QListView *parent, QListViewItem *after = 0 ) : MediaItem( parent, after )        {}        RioKarmaMediaItem( QListViewItem *parent, QListViewItem *after = 0 ) : MediaItem( parent, after )        {}        ~RioKarmaMediaItem()        {            //m_track->removeItem(this);        }        void                        setTrack( RioKarmaTrack *track ) { m_track = track; m_track->addItem( this ); }        RioKarmaTrack               *track() { return m_track; }        QString                     filename() { return m_track->bundle()->url().path(); }    private:        RioKarmaTrack               *m_track;};class RioKarmaMediaDevice : public MediaDevice{    Q_OBJECT    public:        RioKarmaMediaDevice();        virtual bool                autoConnect() { return true; }        virtual bool                asynchronousTransfer() { return false; }        bool                        isConnected();        int                         current_id();        void                        setDisconnected();        virtual void                rmbPressed( QListViewItem *qitem, const QPoint &point, int arg1 );        virtual void                init( MediaBrowser *parent );        virtual QStringList         supportedFiletypes();    protected:        MediaItem*                  trackExists( const MetaBundle &bundle );        bool                        openDevice( bool silent );        bool                        closeDevice();        bool                        lockDevice( bool tryLock=false ) { if( tryLock ) { return m_mutex.tryLock(); } else { m_mutex.lock(); return true; } }        void                        unlockDevice() { m_mutex.unlock(); }        virtual MediaItem           *copyTrackToDevice( const MetaBundle &bundle );        void                        synchronizeDevice();        int                         deleteItemFromDevice( MediaItem *item, int flags=DeleteTrack );        void                        addToPlaylist( MediaItem *list, MediaItem *after, QPtrList<MediaItem> items );        RioKarmaMediaItem           *newPlaylist( const QString &name, MediaItem *list, QPtrList<MediaItem> items );        bool                        getCapacity( KIO::filesize_t *total, KIO::filesize_t *available );        virtual void                updateRootItems() {};    private:        RioKarmaMediaItem           *addTrackToView( RioKarmaTrack *track, RioKarmaMediaItem *item=0 );        int                         readKarmaMusic( void );        void                        clearItems();        int                         deleteRioTrack( RioKarmaMediaItem *trackItem );        int                         m_rio;        QMutex                      m_mutex;        QMap<QString,RioKarmaMediaItem *> m_fileNameToItem;};#endif

⌨️ 快捷键说明

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