[Kpod-devel] cvs_commit ipodslave/src consistencycheck.cpp, 1.8, 1.9 vfs.h, 1.1, 1.2 ipodslave.cpp,
Status: Beta
Brought to you by:
fry26
Update of /cvsroot/kpod/ipodslave/src In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv1427/src Modified Files: consistencycheck.cpp vfs.h ipodslave.cpp fileutils.cpp kpod.cpp ipodslave.h consistencycheck.h .cvsignore Log Message: libqtpod HEAD dev adoptions Index: .cvsignore =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** .cvsignore 10 Dec 2007 23:12:55 -0000 1.2 --- .cvsignore 28 Dec 2007 11:43:11 -0000 1.3 *************** *** 6,7 **** --- 6,9 ---- .deps .libs + vfs.loT + *.loT Index: ipodslave.cpp =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/ipodslave.cpp,v retrieving revision 1.113 retrieving revision 1.114 diff -C2 -d -r1.113 -r1.114 *** ipodslave.cpp 17 Dec 2007 23:14:21 -0000 1.113 --- ipodslave.cpp 28 Dec 2007 11:43:11 -0000 1.114 *************** *** 204,208 **** // redirect to file ! redirection( KURL( QString( "file:" ) + track->getFilePath() ) ); } break; --- 204,208 ---- // redirect to file ! redirection( KURL( QString( "file:" ) + ipod->getFileForPathInfo( track->getPathInfo() ) ) ); } break; *************** *** 262,266 **** return; } ! mimeType( KMimeType::findByPath( track->getFilePath() )->name() ); } break; --- 262,266 ---- return; } ! mimeType( KMimeType::findByPath( ipod->getFileForPathInfo( track->getPathInfo() ) )->name() ); } break; *************** *** 444,448 **** direntry.clear(); QString trackname = formatTrackname( *track, item->getPosition(), trackdigits, true ); ! fillUDSEntry( ipod->getITunesDB(), direntry, trackname, *track, S_IFREG, false ); listEntry( direntry, false ); } --- 444,448 ---- direntry.clear(); QString trackname = formatTrackname( *track, item->getPosition(), trackdigits, true ); ! fillUDSEntry( *ipod, direntry, trackname, *track, S_IFREG, false ); listEntry( direntry, false ); } *************** *** 491,495 **** direntry.clear(); QString trackname= formatTrackname( *track, ++tracknum, trackdigits, false ); ! fillUDSEntry( ipod->getITunesDB(), direntry, trackname, *track, S_IFREG, false ); // appendUDSAtom( direntry, KIO::UDS_URL, url.url() + "/" + trackname ); listEntry( direntry, false); --- 491,495 ---- direntry.clear(); QString trackname= formatTrackname( *track, ++tracknum, trackdigits, false ); ! fillUDSEntry( *ipod, direntry, trackname, *track, S_IFREG, false ); // appendUDSAtom( direntry, KIO::UDS_URL, url.url() + "/" + trackname ); listEntry( direntry, false); *************** *** 557,561 **** // redirection( KURL( QString( "file:" ) + track->getFilePath() ) ); ! fillUDSEntry( ipod->getITunesDB(), direntry, dirmodel.getFilename(), *track, S_IFREG, false ); // appendUDSAtom( direntry, KIO::UDS_URL, url.url() ); statEntry( direntry); --- 557,561 ---- // redirection( KURL( QString( "file:" ) + track->getFilePath() ) ); ! fillUDSEntry( *ipod, direntry, dirmodel.getFilename(), *track, S_IFREG, false ); // appendUDSAtom( direntry, KIO::UDS_URL, url.url() ); statEntry( direntry); *************** *** 701,705 **** if( dirmodel.getCategory() == DirectoryModel::Artists) { // remove Track ! QFile trackfile( pTrack->getFilePath() ); if ( trackfile.exists() && !trackfile.remove() ) { kdDebug() << "ipodslave::del() : track could not be deleted " << dirmodel.getFilename() << endl; --- 701,705 ---- if( dirmodel.getCategory() == DirectoryModel::Artists) { // remove Track ! QFile trackfile( ipod->getFileForPathInfo( pTrack->getPathInfo() ) ); if ( trackfile.exists() && !trackfile.remove() ) { kdDebug() << "ipodslave::del() : track could not be deleted " << dirmodel.getFilename() << endl; *************** *** 990,998 **** // create new TrackID / filename etc ITunesDBTrack * dest_track = dest_ipod->getITunesDB().createNewTrack(); ! // append the real file extension to the path ! dest_track->setFileExtension( dest.getFileExtension() ); ! QFile src_file( src_track->getFilePath() ); ! QFile dest_file( dest_track->getFilePath() ); // check available disk space --- 990,997 ---- // create new TrackID / filename etc ITunesDBTrack * dest_track = dest_ipod->getITunesDB().createNewTrack(); ! dest_track->setPathInfo( dest_ipod->findNewTrackPathInfo( dest_track->getID(), dest.getFileExtension() ) ); ! QFile src_file( src_ipod->getFileForPathInfo( src_track->getPathInfo() ) ); ! QFile dest_file( dest_ipod->getFileForPathInfo( dest_track->getPathInfo() ) ); // check available disk space *************** *** 1109,1118 **** // TODO check against libqtpod-0.3.1 API void kio_ipodslaveProtocol::doPut( KPod& ipod, const DirectoryModel& dirmodel ) { ! ITunesDBTrack * track = ipod.getITunesDB().createNewTrack( dirmodel.getFileExtension() ); // copy track to iPod (file wise) ! QFile outfile( track->getFilePath() ); if ( outfile.exists() ) { ! error( ERR_SLAVE_DEFINED, "File " + track->getFilePath() + " already exists." ); return; } --- 1108,1119 ---- // TODO check against libqtpod-0.3.1 API void kio_ipodslaveProtocol::doPut( KPod& ipod, const DirectoryModel& dirmodel ) { ! ITunesDBTrack * track = ipod.getITunesDB().createNewTrack(); ! track->setPathInfo( ipod.findNewTrackPathInfo( track->getID(), dirmodel.getFileExtension() ) ); // copy track to iPod (file wise) ! QString filepath = ipod.getFileForPathInfo( track->getPathInfo() ); ! QFile outfile( filepath ); if ( outfile.exists() ) { ! error( ERR_SLAVE_DEFINED, "File " + filepath + " already exists." ); return; } *************** *** 1392,1399 **** */ // TODO check against libqtpod-0.3.1 API ! void kio_ipodslaveProtocol::fillUDSEntry( const ITunesDB& db, UDSEntry &entry, const QString &name, const itunesdb::Track& track, long type, bool changed) { QString filename= QFile::decodeName( name.local8Bit().replace( "/", "%2f" ) ); ! const QString localPath( db.getFileForPathInfo( track.getPathInfo() ) ); appendUDSAtom( entry, KIO::UDS_NAME, filename); appendUDSAtom( entry, KIO::UDS_FILE_TYPE, type); --- 1393,1400 ---- */ // TODO check against libqtpod-0.3.1 API ! void kio_ipodslaveProtocol::fillUDSEntry( const KPod& ipod, UDSEntry &entry, const QString &name, const itunesdb::Track& track, long type, bool changed) { QString filename= QFile::decodeName( name.local8Bit().replace( "/", "%2f" ) ); ! const QString localPath( ipod.getFileForPathInfo( track.getPathInfo() ) ); appendUDSAtom( entry, KIO::UDS_NAME, filename); appendUDSAtom( entry, KIO::UDS_FILE_TYPE, type); Index: kpod.cpp =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/kpod.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** kpod.cpp 18 Dec 2007 18:02:25 -0000 1.27 --- kpod.cpp 28 Dec 2007 11:43:11 -0000 1.28 *************** *** 190,194 **** } ! QString filename = getITunesDB().getFileForPathInfo( track->getPathInfo() ); if ( QFile::exists( filename ) ) { QFile::remove( filename ); --- 190,194 ---- } ! QString filename = getFileForPathInfo( track->getPathInfo() ); if ( QFile::exists( filename ) ) { QFile::remove( filename ); *************** *** 542,545 **** --- 542,547 ---- /* 46 */ valuebuffer << QString().setNum( track.getSeasonNumber(), 36 ); /* 47 */ valuebuffer << QString().setNum( track.getEpisodeNumber(), 36 ); + /* 48 */ valuebuffer << QString().setNum( track.getArtworkCount(), 36 ); + /* 49 */ valuebuffer << QString().setNum( track.getArtworkSize(), 36 ); return valuebuffer; *************** *** 649,652 **** --- 651,656 ---- const Q_UINT32 getSeasonNumber() { return values[ 46 ].toUInt( NULL, 36 ); } const Q_UINT32 getEpisodeNumber() { return values[ 47 ].toUInt( NULL, 36 ); } + const Q_UINT32 getArtworkCount() { return values[ 48 ].toUInt( NULL, 36 ); } + const Q_UINT32 getArtworkSize() { return values[ 49 ].toUInt( NULL, 36 ); } }; ITunesDBTrack * KPod::readTrackFromLogEntry( const QStringList& values ) { Index: vfs.h =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/vfs.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** vfs.h 18 Dec 2007 18:04:57 -0000 1.1 --- vfs.h 28 Dec 2007 11:43:11 -0000 1.2 *************** *** 106,109 **** --- 106,117 ---- std::string mimetype( const std::string& path, KIO::SlaveBase& drain ); + + /** + * Returns true if the node is visible and should be taken into account when + * handling a VFS request + * Default implementation returns true - reimplement this method to dynamically + * enable/disable nodes depending on application state. + */ + virtual bool isVisible() const; irgendwo müssen schon die gesammelten Daten abgelegt werden ... Context? Index: consistencycheck.cpp =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/consistencycheck.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** consistencycheck.cpp 17 Dec 2007 23:14:21 -0000 1.8 --- consistencycheck.cpp 28 Dec 2007 11:43:11 -0000 1.9 *************** *** 49,69 **** class MissingFileTrackPredicate : public TrackPredicate { ! const ITunesDB& m_itunesdb; public: ! MissingFileTrackPredicate( const ITunesDB& itunesdb ) : ! m_itunesdb( itunesdb ) {} virtual ~MissingFileTrackPredicate() {} bool operator () ( const Track * track ) const { ! return track && !QFile( m_itunesdb.getFileForPathInfo( track->getPathInfo() ) ).exists(); } }; ! void ConsistencyCheck::printMissingFilesTable( const ITunesDB& itunesdb, QTextStream& stream ) { // get the tracks that reference to non existing files ITunesDB::FilteredTrackConstIterator<MissingFileTrackPredicate> missingTracksIter = ! itunesdb.getTracksBy( MissingFileTrackPredicate( itunesdb ) ); stream << "Missing Files" << endl; --- 49,70 ---- class MissingFileTrackPredicate : public TrackPredicate { ! const KPod& m_ipod; public: ! MissingFileTrackPredicate( const KPod& ipod ) : ! m_ipod( ipod ) {} virtual ~MissingFileTrackPredicate() {} bool operator () ( const Track * track ) const { ! return track && !QFile( m_ipod.getFileForPathInfo( track->getPathInfo() ) ).exists(); } }; ! void ConsistencyCheck::printMissingFilesTable( const KPod& ipod, QTextStream& stream ) { // get the tracks that reference to non existing files + const ITunesDB& itunesdb = ipod.getITunesDB(); ITunesDB::FilteredTrackConstIterator<MissingFileTrackPredicate> missingTracksIter = ! itunesdb.getTracksBy( MissingFileTrackPredicate( ipod ) ); stream << "Missing Files" << endl; *************** *** 75,79 **** stream << "<tr><td><pre>"; stream << track->getArtist() << "\n" << track->getAlbum() << "\n" << track->getTitle() << "</pre></td>"; ! stream << "<td><pre>" << track->getFilePath() << "</pre></td></tr>" << endl; numFiles++; } --- 76,80 ---- stream << "<tr><td><pre>"; stream << track->getArtist() << "\n" << track->getAlbum() << "\n" << track->getTitle() << "</pre></td>"; ! stream << "<td><pre>" << ipod.getFileForPathInfo( track->getPathInfo() ) << "</pre></td></tr>" << endl; numFiles++; } *************** *** 87,91 **** ITunesDB& itunesdb = ipod.getITunesDB(); ITunesDB::FilteredTrackConstIterator<MissingFileTrackPredicate> missingTracksIter = ! itunesdb.getTracksBy( MissingFileTrackPredicate( itunesdb ) ); while ( missingTracksIter.hasNext() ) { --- 88,92 ---- ITunesDB& itunesdb = ipod.getITunesDB(); ITunesDB::FilteredTrackConstIterator<MissingFileTrackPredicate> missingTracksIter = ! itunesdb.getTracksBy( MissingFileTrackPredicate( ipod ) ); while ( missingTracksIter.hasNext() ) { *************** *** 94,99 **** } ! void ConsistencyCheck::printMultipleReferencedFiles( const ITunesDB& itunesdb, QTextStream& stream ) { ! MultipleTrackDict multipleReferenced( itunesdb.getNumTracks(), false ); multipleReferenced.setAutoDelete( true ); --- 95,100 ---- } ! void ConsistencyCheck::printMultipleReferencedFiles( const KPod& ipod, QTextStream& stream ) { ! const ITunesDB& itunesdb = ipod.getITunesDB(); MultipleTrackDict multipleReferenced( itunesdb.getNumTracks(), false ); multipleReferenced.setAutoDelete( true ); *************** *** 101,108 **** while ( allTracksIter.hasNext() ) { ITunesDBTrack * track = allTracksIter.next(); ! TrackPtrList * sameFileList = multipleReferenced.find( track->getFilePath() ); if ( !sameFileList ) { sameFileList = new TrackPtrList(); ! multipleReferenced.insert( track->getFilePath(), sameFileList ); } sameFileList->append( track ); --- 102,110 ---- while ( allTracksIter.hasNext() ) { ITunesDBTrack * track = allTracksIter.next(); ! QString filepath = ipod.getFileForPathInfo( track->getPathInfo() ); ! TrackPtrList * sameFileList = multipleReferenced.find( filepath ); if ( !sameFileList ) { sameFileList = new TrackPtrList(); ! multipleReferenced.insert( filepath, sameFileList ); } sameFileList->append( track ); *************** *** 142,148 **** ITunesDBTrack * track = itunesdb.createNewTrack(); track->setPathInfo( *unrefIter ); ! QString filePath = track->getFilePath(); ! if ( !FileUtils::readMP3Metadata( track->getFilePath(), track ) ) { #ifdef CONSISTENCY_CHECK_ENSURE_CONSISTENCY QFile( filePath ).remove(); --- 144,150 ---- ITunesDBTrack * track = itunesdb.createNewTrack(); track->setPathInfo( *unrefIter ); ! QString filePath = ipod.getFileForPathInfo( track->getPathInfo() ); ! if ( !FileUtils::readMP3Metadata( filePath, track ) ) { #ifdef CONSISTENCY_CHECK_ENSURE_CONSISTENCY QFile( filePath ).remove(); *************** *** 183,188 **** void ConsistencyCheck::handleRequest( KPod& ipod, const KURL& url, QByteArray& response, QString& mimeType ) { - ITunesDB& itunesdb = ipod.getITunesDB(); - QTextOStream stream( response ); QString title= ipod.getName(); --- 185,188 ---- *************** *** 192,199 **** // multiple referenced files table ! printMultipleReferencedFiles( itunesdb, stream ); // missing files table ! printMissingFilesTable( itunesdb, stream ); #ifdef CONSISTENCY_CHECK_ENSURE_CONSISTENCY --- 192,199 ---- // multiple referenced files table ! printMultipleReferencedFiles( ipod, stream ); // missing files table ! printMissingFilesTable( ipod, stream ); #ifdef CONSISTENCY_CHECK_ENSURE_CONSISTENCY Index: fileutils.cpp =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/fileutils.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** fileutils.cpp 2 Jul 2007 22:42:30 -0000 1.12 --- fileutils.cpp 28 Dec 2007 11:43:11 -0000 1.13 *************** *** 41,44 **** --- 41,46 ---- ID3_Tag id3tag; const Mp3_Headerinfo * mp3header; + Q_UINT32 artworksz; + Q_UINT16 artworkct; inline Q_UINT32 getUIntField( ID3_FrameID frameID, ID3_FieldID fieldID ) { *************** *** 53,62 **** return result; } public: ! MP3MetaDataProvider( const QString& filename ) : fileInfo( filename ), id3tag( filename ) { ! // kdDebug() << "MP3MetaDataProvider( const QString& filename )" << endl; mp3header = id3tag.GetMp3HeaderInfo(); ! // kdDebug() << "MP3MetaDataProvider( const QString& filename ) end" << endl; } virtual ~MP3MetaDataProvider() { } --- 55,82 ---- return result; } + + inline void initArtworkInfo() { + ID3_Frame * frame = NULL; + ID3_Tag::Iterator * frameIter = id3tag.CreateIterator(); + while ( ( frame = frameIter->GetNext() ) != NULL ) { + if ( frame->GetID() == ID3FID_PICTURE ) { + ID3_Field * field = frame->GetField(ID3FN_DATA); + if ( field ) { + artworksz += field->Size(); + ++artworkct; + } + } + } + } public: ! MP3MetaDataProvider( const QString& filename ) ! : fileInfo( filename ), id3tag( filename ), ! artworksz( 0 ), artworkct( 0 ) { ! kdDebug() << "MP3MetaDataProvider( const QString& filename )" << endl; mp3header = id3tag.GetMp3HeaderInfo(); ! initArtworkInfo(); ! kdDebug() << "Artwork count/size " << artworkct << "/" << artworksz << endl; ! kdDebug() << "MP3MetaDataProvider( const QString& filename ) end" << endl; } virtual ~MP3MetaDataProvider() { } *************** *** 301,304 **** --- 321,330 ---- return id3tag.Find( ID3FID_SYNCEDLYRICS ) != NULL || id3tag.Find( ID3FID_UNSYNCEDLYRICS ) != NULL; } + Q_UINT16 getArtworkCount() const { + return artworkct; + } + Q_UINT32 getArtworkSize() const { + return artworksz; + } }; Index: consistencycheck.h =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/consistencycheck.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** consistencycheck.h 22 Oct 2007 22:09:49 -0000 1.2 --- consistencycheck.h 28 Dec 2007 11:43:11 -0000 1.3 *************** *** 35,40 **** typedef QDictIterator<itunesdb::TrackPtrList> MultipleTrackDictIter; ! void printMissingFilesTable( const ITunesDB& itunesdb, QTextStream& stream ); ! void printMultipleReferencedFiles( const ITunesDB& itunesdb, QTextStream& stream ); void checkForUnreferencedFiles( KPod& ipod, QTextStream& stream ); void removeMissingFileTracks( KPod& ipod ); --- 35,40 ---- typedef QDictIterator<itunesdb::TrackPtrList> MultipleTrackDictIter; ! void printMissingFilesTable( const KPod& itunesdb, QTextStream& stream ); ! void printMultipleReferencedFiles( const KPod& itunesdb, QTextStream& stream ); void checkForUnreferencedFiles( KPod& ipod, QTextStream& stream ); void removeMissingFileTracks( KPod& ipod ); Index: ipodslave.h =================================================================== RCS file: /cvsroot/kpod/ipodslave/src/ipodslave.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** ipodslave.h 7 Mar 2007 07:39:02 -0000 1.29 --- ipodslave.h 28 Dec 2007 11:43:11 -0000 1.30 *************** *** 63,67 **** long logfileentrypos; // the number of logfile entries we already know about ! void fillUDSEntry(const ITunesDB& db, KIO::UDSEntry& entry, const QString& name, const itunesdb::Track& track, long type, bool changed); void fillUDSEntry(KIO::UDSEntry& entry, const QString& name, size_t size, long type, bool changed, uint lastmodified, const QString *mimetype = NULL); void appendUDSAtom(KIO::UDSEntry& entry, unsigned int uds, long longinfo); --- 63,67 ---- long logfileentrypos; // the number of logfile entries we already know about ! void fillUDSEntry(const KPod& db, KIO::UDSEntry& entry, const QString& name, const itunesdb::Track& track, long type, bool changed); void fillUDSEntry(KIO::UDSEntry& entry, const QString& name, size_t size, long type, bool changed, uint lastmodified, const QString *mimetype = NULL); void appendUDSAtom(KIO::UDSEntry& entry, unsigned int uds, long longinfo); |