ipodmediadevice.h

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

H
177
字号
/***************************************************************************    copyright            : (C) 2005, 2006 by Martin Aumueller    email                : aumuell@reserv.at    copyright            : (C) 2004 by Christian Muehlhaeuser    email                : chris@chris.de ***************************************************************************//*************************************************************************** *   This library is free software; you can redistribute it and/or modify  * *   it  under the terms of the GNU General Public License version 2 as    * *   published by the Free Software Foundation.                            * *                                                                         * *   This library is distributed in the hope that it will be useful, but   * *   WITHOUT ANY WARRANTY; without even the implied warranty of            * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     * *   Lesser General Public License for more details.                       * *                                                                         * *   You should have received a copy of the GNU General Public License     * *   along with this library; if not, write to the Free Software           * *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,            * *   MA  02110-1301  USA                                                   * ***************************************************************************/#ifndef AMAROK_IPODMEDIADEVICE_H#define AMAROK_IPODMEDIADEVICE_Hextern "C" {#include <gpod/itdb.h>}#include "mediabrowser.h"#include <qmutex.h>#include <qptrlist.h>#include <qdict.h>#include <kio/job.h>class QCheckBox;class QLabel;class QLineEdit;class QFile;class KAction;class IpodMediaItem;class PodcastInfo;class IpodMediaDevice : public MediaDevice{    friend class IpodMediaItem;    Q_OBJECT    public:        IpodMediaDevice();        void              init( MediaBrowser* parent );        virtual           ~IpodMediaDevice();        virtual bool      autoConnect()          { return m_autoConnect; }        virtual bool      asynchronousTransfer() { return false; /* kernel buffer flushes freeze Amarok */ }        QStringList       supportedFiletypes();        bool              isConnected();        virtual void      addConfigElements( QWidget *parent );        virtual void      removeConfigElements( QWidget *parent );        virtual void      applyConfig();        virtual void      loadConfig();        virtual MediaItem*tagsChanged( MediaItem *item, const MetaBundle &bundle );        virtual KAction  *customAction() { return m_customAction; }    protected:        MediaItem        *trackExists( const MetaBundle& bundle );        bool              openDevice( bool silent=false );        bool              closeDevice();        bool              lockDevice(bool tryLock=false ) { if( tryLock ) { return m_mutex.tryLock(); } else { m_mutex.lock(); return true; } }        void              unlockDevice() { m_mutex.unlock(); }        void              initView();        void              detectModel();        virtual MediaItem *copyTrackToDevice( const MetaBundle& bundle );        /**         * Insert track already located on media device into the device's database         * @param pathname Location of file on the device to add to the database         * @param bundle MetaBundle of track         * @param podcastInfo PodcastInfo of track if it is a podcast, 0 otherwise         * @return If successful, the created MediaItem in the media device view, else 0         */        virtual MediaItem *insertTrackIntoDB( const QString &pathname,                const MetaBundle &metaBundle, const MetaBundle &propertiesBundle,                const PodcastInfo *podcastInfo );        virtual MediaItem *updateTrackInDB( IpodMediaItem *item, const QString &pathname,                const MetaBundle &metaBundle, const MetaBundle &propertiesBundle,                const PodcastInfo *podcastInfo );        /**         * Determine the url for which a track should be uploaded to on the device         * @param bundle MetaBundle of track to base pathname creation on         * @return the url to upload the track to         */        virtual KURL determineURLOnDevice( const MetaBundle& bundle );        void              synchronizeDevice();        int               deleteItemFromDevice( MediaItem *item, int flags=DeleteTrack );        virtual void      deleteFile( const KURL &url );        void              addToPlaylist( MediaItem *list, MediaItem *after, QPtrList<MediaItem> items );        MediaItem        *newPlaylist( const QString &name, MediaItem *list, QPtrList<MediaItem> items );        bool              getCapacity( KIO::filesize_t *total, KIO::filesize_t *available );        void              rmbPressed( QListViewItem* qitem, const QPoint& point, int );        bool              checkIntegrity();        void              updateArtwork();    protected slots:        void              renameItem( QListViewItem *item );        virtual void      fileDeleted( KIO::Job *job );    private:        bool              initializeIpod();        bool              writeITunesDB( bool threaded=true );        bool              createLockFile( bool silent );        IpodMediaItem    *addTrackToView( Itdb_Track *track, IpodMediaItem *item = 0,                                          bool checkIntegrity = false, bool batchmode = false );        void              addPlaylistToView( Itdb_Playlist *playlist );        void              playlistFromItem( IpodMediaItem *item );        QString           itunesDir( const QString &path = QString::null ) const;        QString           realPath( const char *ipodPath );        QString           ipodPath( const QString &realPath );        bool              pathExists( const QString &ipodPath, QString *realPath=0 );        // ipod database        Itdb_iTunesDB    *m_itdb;        Itdb_Playlist    *m_masterPlaylist;        QDict<Itdb_Track> m_files;        // podcasts        Itdb_Playlist*    m_podcastPlaylist;        bool              m_isShuffle;        bool              m_isMobile;        bool              m_isIPhone;        bool              m_supportsArtwork;        bool              m_supportsVideo;        bool              m_rockboxFirmware;        bool              m_needsFirewireGuid;        bool              m_autoConnect;        IpodMediaItem    *getArtist( const QString &artist );        IpodMediaItem    *getAlbum( const QString &artist, const QString &album );        IpodMediaItem    *getTrack( const QString &artist, const QString &album,                                    const QString &title,                                    int discNumber = -1, int trackNumber = -1,                                    const PodcastEpisodeBundle *peb = 0 );        IpodMediaItem    *getTrack( const Itdb_Track *itrack );        bool              removeDBTrack( Itdb_Track *track );        bool              m_dbChanged;        QCheckBox        *m_syncStatsCheck;        QCheckBox        *m_autoDeletePodcastsCheck;        QFile            *m_lockFile;        QMutex            m_mutex;        KAction          *m_customAction;        enum              { CHECK_INTEGRITY, UPDATE_ARTWORK, SET_IPOD_MODEL };    private slots:        void              slotIpodAction( int );};#endif

⌨️ 快捷键说明

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