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 + -
显示快捷键?