metabundle.h

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

H
546
字号
    int fileType() const;  // returns a value from enum FileType    bool exists() const; // true for everything but local files that aren't there    PodcastEpisodeBundle *podcastBundle() const;    LastFm::Bundle *lastFmBundle() const;    QString streamName() const;    QString streamUrl()  const;    QString uniqueId() const;    QString prettyTitle() const;    QString veryNiceTitle() const;    QString prettyURL() const;    QString prettyBitrate() const;    QString prettyLength() const;    QString prettySampleRate( bool shortened = false ) const;    QString prettyFilesize() const;    QString prettyRating() const;    bool safeToSave() { return m_safeToSave; }    QString getRandomString( int size, bool numbersOnly = false );public: //modifiers    void setUrl( const KURL &url );    void setPath( const QString &path );    void setTitle( const QString &title );    void setArtist( const AtomicString &artist );    void setAlbumArtist( const AtomicString &albumArtist );    void setComposer( const AtomicString &composer );    void setAlbum( const AtomicString &album );    void setGenre( const AtomicString &genre );    void setComment( const AtomicString &comment );    void setYear( int year );    void setDiscNumber( int discNumber );    void setTrack( int track );    void setBpm( float bpm );    void setLength( int length );    void setBitrate( int bitrate );    void setSampleRate( int sampleRate );    void setScore( float score );    void setRating( int rating );    void setPlayCount( int playcount );    void setLastPlay( uint lastplay );    void setFilesize( int bytes );    // No direct moodbar mutator -- moodbar should not be separated    // from the metabundle    void updateFilesize();    void setFileType( int type );    void setCompilation( int compilation );    bool checkExists();    void setPodcastBundle( const PodcastEpisodeBundle &peb );    void setLastFmBundle( const LastFm::Bundle &last );    void setUniqueId(); //uses database for lookup    void setUniqueId( const QString &id ); //SEE COMMENT in .CPP    const TagLib::ByteVector readUniqueIdHelper( TagLib::FileRef fileref ) const;    QString readUniqueId( TagLib::FileRef *fileref = 0  );    void scannerAcknowledged() {}    void detach(); // for being able to apply QDeepCopy<>public: //static helper functions    static QString prettyBitrate( int );    static QString prettyLength( int, bool showHours = false ); //must be int, see Unavailable, etc. above    static QString prettyFilesize( int );    static QString prettyRating( int rating, bool trailingzero = false );    static QString ratingDescription( int );    static QStringList ratingList();    static QString prettyTime( uint, bool showHours = true );    static QString fuzzyTime( int );    static QString veryPrettyTime( int );    static QString zeroPad( uint i );    static QString prettyTitle( const QString &filename );    static QStringList genreList();protected:    enum ExtendedTags { composerTag, albumArtistTag, discNumberTag, bpmTag, compilationTag };    /** Called before the tags in \p columns are changed. */    virtual void aboutToChange( const QValueList<int> &columns );    /** Convenience method. */    void aboutToChange( int column );    /** Called after the tags in \p columns are changed. */    virtual void reactToChanges( const QValueList<int> &columns );    /** Convenience method. */    void reactToChange( int column );    KURL m_url;    QString m_title;    AtomicString m_artist;    AtomicString m_albumArtist;    AtomicString m_composer;    AtomicString m_album;    AtomicString m_comment;    AtomicString m_genre;    QString m_streamName;    QString m_streamUrl;    QString m_uniqueId;    int m_year;    int m_discNumber;    int m_track;    float m_bpm;    int m_bitrate;    int m_length;    int m_sampleRate;    float m_score;    int m_rating;    int m_playCount;    uint m_lastPlay;    int m_filesize;    Moodbar *m_moodbar;    int m_type;    bool m_exists: 1;    bool m_isValidMedia: 1;    bool m_isCompilation: 1;    bool m_notCompilation: 1;    bool m_safeToSave: 1;    int m_waitingOnKIO;    QString m_tempSavePath;    QString m_origRenamedSavePath;    QCString m_tempSaveDigest;    TagLib::FileRef* m_saveFileref;    PodcastEpisodeBundle *m_podcastBundle;    LastFm::Bundle *m_lastFmBundle;    // The vars below are used to optimize search by storing    // the full text to be searched. They are mutable, as they    // act like a sort of cache for the const method matchesFast    // whether the search text should be rebuilt    volatile mutable bool m_isSearchDirty;    // which columns the search string contains    mutable ColumnMask m_searchColumns;    // the search string: textualized columns separated by space    // note that matchFast searches by words, hence a word cannot span    // space-separated columns    mutable QString m_searchStr;private:    static inline QString prettyGeneric( const QString &s, const int i )    {        return (i > 0) ? s.arg( i ) : (i == Undetermined) ? "?" : "-";    }    void init( TagLib::AudioProperties *ap = 0 );    void init( const KFileMetaInfo& info );    void setExtendedTag( TagLib::File *file, int tag, const QString value );    void loadImagesFromTag( const TagLib::ID3v2::Tag &tag, EmbeddedImageList& images ) const;    int getRand();};/// for your conveniencetypedef QValueList<MetaBundle> BundleList;inline bool MetaBundle::operator!=(const MetaBundle &bundle) const { return !operator==( bundle ); }inline bool MetaBundle::isEmpty() const { return url().isEmpty(); }inline bool MetaBundle::isValidMedia() const { return m_isValidMedia; }inline bool MetaBundle::audioPropertiesUndetermined() const{    return m_bitrate == Undetermined || m_sampleRate == Undetermined || m_length == Undetermined;}inline void MetaBundle::aboutToChange( const QValueList<int>& ) { }inline void MetaBundle::aboutToChange( int column ) { aboutToChange( QValueList<int>() << column ); }inline void MetaBundle::reactToChange( int column ) { reactToChanges( QValueList<int>() << column ); }inline bool MetaBundle::exists() const { return m_exists; }inline bool MetaBundle::isFile() const { return url().isLocalFile(); }inline bool MetaBundle::isKioUrl() const { return isKioUrl( url() ); }inline bool MetaBundle::isKioUrl( const KURL &url ) { return url.protocol() != "daap" && url.protocol() != "cdda" && url.protocol() != "lastfm"; }inline int MetaBundle::track()      const { return m_track == Undetermined ? 0 : m_track; }inline int MetaBundle::year()       const { return m_year  == Undetermined ? 0 : m_year; }inline int MetaBundle::length()     const { return m_length > 0 ? m_length : 0; }inline int MetaBundle::bitrate()    const { return m_bitrate == Undetermined ? 0 : m_bitrate; }inline int MetaBundle::sampleRate() const { return m_sampleRate == Undetermined ? 0 : m_sampleRate; }inline int MetaBundle::filesize()   const { return m_filesize == Undetermined ? 0 : m_filesize; }inline int MetaBundle::fileType()   const { return m_type; }inline Moodbar &MetaBundle::moodbar(){  if( m_moodbar == 0 ) m_moodbar = new Moodbar( this );  return *m_moodbar;}inline const Moodbar &MetaBundle::moodbar_const() const{  // Anyone know of a better way to do this?  if( m_moodbar == 0 )    const_cast<MetaBundle*>(this)->m_moodbar      = new Moodbar( const_cast<MetaBundle*>(this) );  return *m_moodbar;}inline const KURL&     MetaBundle::url()        const { return m_url; }inline QString  MetaBundle::filename()   const { return url().fileName(); }inline QString  MetaBundle::directory()  const{    return url().isLocalFile() ? url().directory() : url().upURL().prettyURL();}inline QString MetaBundle::title()            const { return m_title; }inline AtomicString MetaBundle::artist()      const { return m_artist; }inline AtomicString MetaBundle::album()       const { return m_album; }inline AtomicString MetaBundle::comment()     const { return m_comment; }inline AtomicString MetaBundle::genre()       const { return m_genre; }inline AtomicString MetaBundle::composer()    const { return m_composer; }inline AtomicString MetaBundle::albumArtist() const { return m_albumArtist; }inline QString MetaBundle::streamName() const { return m_streamName; }inline QString MetaBundle::streamUrl()  const { return m_streamUrl; }inline QString MetaBundle::uniqueId()   const { return m_uniqueId; }inline int MetaBundle::discNumber() const { return m_discNumber == Undetermined ? 0 : m_discNumber; }inline float MetaBundle::bpm() const { return m_bpm == Undetermined ? 0 : m_bpm; }inline int MetaBundle::compilation() const{    if( m_isCompilation )        return CompilationYes;    else if( m_notCompilation )        return CompilationNo;    else        return CompilationUnknown;}inline QString MetaBundle::type() const{    return isFile()           ? filename().mid( filename().findRev( '.' ) + 1 )           : i18n( "Stream" );}inline PodcastEpisodeBundle *MetaBundle::podcastBundle() const { return m_podcastBundle; }inline LastFm::Bundle *MetaBundle::lastFmBundle() const { return m_lastFmBundle; }inline QString MetaBundle::prettyURL() const { return url().prettyURL(); }inline QString MetaBundle::prettyBitrate() const { return prettyBitrate( m_bitrate ); }inline QString MetaBundle::prettyLength() const { return prettyLength( m_length, true ); }inline QString MetaBundle::prettyFilesize() const { return prettyFilesize( filesize() ); }inline QString MetaBundle::prettyRating() const { return prettyRating( rating() ); }inline QString MetaBundle::prettySampleRate( bool shortened ) const    {        if ( shortened )            return prettyGeneric( i18n( "SampleRate", "%1 kHz" ), m_sampleRate / 1000 );        else            return prettyGeneric( i18n( "SampleRate", "%1 Hz" ), m_sampleRate );    }inline QString MetaBundle::zeroPad( uint i ) { return ( i < 10 ) ? QString( "0%1" ).arg( i ) : QString::number( i ); }inline bool MetaBundle::hasExtendedMetaInformation() const{    return ( m_type == mp3 || m_type == ogg ||             m_type== mp4  || m_type == flac );}#endif

⌨️ 快捷键说明

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