00001 #ifndef _FILESCANNER_H_ 00002 #define _FILESCANNER_H_ 00003 00004 class Metadata; 00005 class Decoder; 00006 00007 enum MusicFileLocation 00008 { 00009 kFileSystem, 00010 kDatabase, 00011 kNeedUpdate, 00012 kBoth 00013 }; 00014 00015 typedef QMap <QString, MusicFileLocation> MusicLoadedMap; 00016 typedef QMap<QString, int> IdCache; 00017 00018 class FileScanner 00019 { 00020 public: 00021 FileScanner (); 00022 ~FileScanner (); 00023 00024 void SearchDir(QString &directory); 00025 00026 private: 00027 void BuildFileList(QString &directory, MusicLoadedMap &music_files, int parentid); 00028 int GetDirectoryId(const QString &directory, const int &parentid); 00029 bool HasFileChanged(const QString &filename, const QString &date_modified); 00030 void AddFileToDB(const QString &filename); 00031 void RemoveFileFromDB (const QString &filename); 00032 void UpdateFileInDB(const QString &filename); 00033 void ScanMusic(MusicLoadedMap &music_files); 00034 void ScanArtwork(MusicLoadedMap &music_files); 00035 void cleanDB(); 00036 00037 QString m_startdir; 00038 IdCache m_directoryid; 00039 IdCache m_artistid; 00040 IdCache m_genreid; 00041 IdCache m_albumid; 00042 00043 Decoder *m_decoder; 00044 }; 00045 00046 #endif // _FILESCANNER_H_
1.6.3