Implemented playback.
[someplayer] / src / mediascanner.cpp
1 #include "mediascanner.h"
2
3 using namespace SomePlayer::Storage;
4
5 #include <QMap>
6 #include <QDir>
7
8 MediaScanner::MediaScanner(QObject *parent) :
9                 QThread(parent), _stopped(false), _initialized(false)
10 {
11         REGISTERED_FILE_EXTENSIONS << "mp3" << "flac" << "wma" << "acc";
12 }
13
14 void MediaScanner::run() {
15         if (!_initialized)
16                 return;
17         _foundMedia.clear();
18         _scan_directory(_dir);
19         emit scanFinish(_foundMedia);
20         _stopped = true;
21 }
22
23 void MediaScanner::_scan_directory(QDir dir) {
24         QFileInfoList items = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
25         foreach (QFileInfo info, items) {
26                 if (info.isDir()) {
27                         QDir ndir(info.absoluteFilePath());
28                         _scan_directory(ndir);
29                 } else {
30                         QString suffix = info.suffix().toLower();
31                         if (REGISTERED_FILE_EXTENSIONS.contains(suffix)) {
32                                 if (!_foundMedia.contains(info.absoluteFilePath()))
33                                         _foundMedia << info.absoluteFilePath();
34                         }
35                 }
36         }
37 }
38
39 void MediaScanner::stop() {
40         _stopped = true;
41         _initialized = false;
42 }
43
44 void MediaScanner::init(QString dir) {
45         _stopped = false;
46         _initialized = true;
47         _dir = dir;
48 }