MythTV master
musicfilescanner.h
Go to the documentation of this file.
1#ifndef MUSICFILESCANNER_H
2#define MUSICFILESCANNER_H
3
4// MythTV
5#include "mythmetaexp.h"
6
7// Qt headers
8#include <QCoreApplication>
9
10using IdCache = QMap<QString, int>;
11
13{
14 Q_DECLARE_TR_FUNCTIONS(MusicFileScanner)
15
16 enum MusicFileLocation : std::uint8_t
17 {
20 kBoth
21 };
22
24 {
25 QString startDir;
26 MusicFileLocation location {kFileSystem};
27 };
28
29 using MusicLoadedMap = QMap <QString, MusicFileData>;
30 public:
31 explicit MusicFileScanner(bool force = false);
32 ~MusicFileScanner(void) = default;
33
34 void SearchDirs(const QStringList &dirList);
35
36 static bool IsRunning(void);
37
38 private:
39 void BuildFileList(QString &directory, MusicLoadedMap &music_files, MusicLoadedMap &art_files, int parentid);
40 static int GetDirectoryId(const QString &directory, int parentid);
41 static bool HasFileChanged(const QString &filename, const QString &date_modified);
42 void AddMusicToDB(const QString &filename, const QString &startDir);
43 void AddArtworkToDB(const QString &filename, const QString &startDir);
44 void RemoveMusicFromDB(int songid);
45 void RemoveArtworkFromDB(int albumartid);
46 void UpdateMusicInDB(const QString &filename, const QString &startDir);
47 void ScanMusic(MusicLoadedMap &music_files, QList<int> &songidsToDelete);
48 void ScanArtwork(MusicLoadedMap &art_files, QList<int> &albumartidsToDelete);
49 static void cleanDB();
50 static bool IsArtFile(const QString &filename);
51 static bool IsMusicFile(const QString &filename);
52
53 static void updateLastRunEnd(void);
54 static void updateLastRunStart(void);
55 static void updateLastRunStatus(QString &status);
56
57 QStringList m_startDirs;
62
63 uint m_tracksTotal {0};
64 uint m_tracksUnchanged {0};
65 uint m_tracksAdded {0};
66 uint m_tracksRemoved {0};
67 uint m_tracksUpdated {0};
68 uint m_coverartTotal {0};
69 uint m_coverartUnchanged {0};
70 uint m_coverartAdded {0};
71 uint m_coverartRemoved {0};
72 uint m_coverartUpdated {0};
73
74 bool m_forceupdate {false};
75};
76
77#endif // MUSICFILESCANNER_H
~MusicFileScanner(void)=default
QMap< QString, MusicFileData > MusicLoadedMap
QStringList m_startDirs
unsigned int uint
Definition: compat.h:60
bool updateLastRunStatus(QString &status)
Definition: filldata.cpp:55
bool updateLastRunEnd(void)
Definition: filldata.cpp:38
bool updateLastRunStart(void)
Definition: filldata.cpp:46
QMap< QString, int > IdCache
static int ScanMusic(const MythUtilCommandLineParser &cmdline)
#define META_PUBLIC
Definition: mythmetaexp.h:9
static QStringList BuildFileList(const QString &dir, const QStringList &filters)
Definition: mythmusic.cpp:468