Skip to content

Commit

Permalink
✨ add recursively scanning
Browse files Browse the repository at this point in the history
  • Loading branch information
Reverier-Xu committed May 20, 2024
1 parent 05115d1 commit 2f536b9
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 106 deletions.
30 changes: 25 additions & 5 deletions src/library/library.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,19 @@ void Library::scan() {
if (!dir.exists()) {
continue;
}
auto files = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot |
QDir::NoSymLinks);
for (auto& file : files) {
if (Parser::accept(file.absoluteFilePath()))
medias.append(file.absoluteFilePath());
// auto files = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot |
// QDir::NoSymLinks);
// for (auto& file : files) {
// if (Parser::accept(file.absoluteFilePath()))
// medias.append(file.absoluteFilePath());
// }
QDirIterator it(path, QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks,
recursiveScanning() ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags);
while (it.hasNext()) {
it.next();
auto fileInfo = it.fileInfo();
if (Parser::accept(fileInfo.absoluteFilePath()))
medias.append(fileInfo.absoluteFilePath());
}
}
// qDebug() << medias;
Expand Down Expand Up @@ -140,13 +148,15 @@ void Library::loadSettings() {
.value("Folders", QStandardPaths::standardLocations(
QStandardPaths::MusicLocation))
.toStringList();
m_recursiveScanning = settings.value("RecursiveScanning", false).toBool();
settings.endGroup();
}

void Library::saveSettings() {
QSettings settings;
settings.beginGroup("Library");
settings.setValue("Folders", m_folders);
settings.setValue("RecursiveScanning", m_recursiveScanning);
settings.endGroup();
}

Expand Down Expand Up @@ -179,6 +189,16 @@ void Library::setScanning(bool scanning) {
emit scanningChanged(m_scanning);
}

bool Library::recursiveScanning() const { return m_recursiveScanning; }

void Library::setRecursiveScanning(bool n) {
if (m_recursiveScanning == n) {
return;
}
m_recursiveScanning = n;
emit recursiveScanningChanged(n);
}

QStringList Library::folders() const { return m_folders; }

void Library::setFolders(const QStringList& folders) {
Expand Down
10 changes: 10 additions & 0 deletions src/library/library.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class Library : public QObject {

Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
Q_PROPERTY(bool scanning READ scanning NOTIFY scanningChanged)
Q_PROPERTY(bool recursiveScanning READ recursiveScanning WRITE setRecursiveScanning
NOTIFY recursiveScanningChanged)
Q_PROPERTY(
QStringList folders READ folders WRITE setFolders NOTIFY foldersChanged)
Q_PROPERTY(SortStatus sortStatus READ sortStatus WRITE setSortStatus NOTIFY
Expand All @@ -38,6 +40,8 @@ class Library : public QObject {

bool m_scanning = false;

bool m_recursiveScanning = false;

SortStatus m_sortStatus = TitleAsc;

protected:
Expand Down Expand Up @@ -74,6 +78,10 @@ class Library : public QObject {

void setSortStatus(SortStatus sortStatus);

[[nodiscard]] bool recursiveScanning() const;

void setRecursiveScanning(bool n);

public slots:

Q_INVOKABLE void load(const QString& route);
Expand Down Expand Up @@ -104,4 +112,6 @@ class Library : public QObject {
void foldersChanged(const QStringList& folders);

void sortStatusChanged(SortStatus sortStatus);

void recursiveScanningChanged(bool recursiveScanning);
};
2 changes: 0 additions & 2 deletions src/playlist/playlist.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ class Playlist : public QAbstractListModel {
sortStatusChanged)
Q_PROPERTY(
QString current READ current WRITE setCurrent NOTIFY currentChanged)
Q_PROPERTY(SortStatus sortStatus READ sortStatus WRITE setSortStatus NOTIFY
sortStatusChanged)
Q_PROPERTY(qsizetype size READ size NOTIFY sizeChanged)

private:
Expand Down
Binary file modified src/ui/i18n/en_US.qm
Binary file not shown.
78 changes: 42 additions & 36 deletions src/ui/i18n/en_US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,14 +95,14 @@
<context>
<name>MediaRow</name>
<message>
<location filename="../../../build/src/qml/BitWave/ui/components/MediaRow.qml" line="145"/>
<location filename="../components/MediaRow.qml" line="145"/>
<location filename="../../../build/src/qml/BitWave/ui/components/MediaRow.qml" line="146"/>
<location filename="../components/MediaRow.qml" line="146"/>
<source>Add to playlist</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/components/MediaRow.qml" line="239"/>
<location filename="../components/MediaRow.qml" line="239"/>
<location filename="../../../build/src/qml/BitWave/ui/components/MediaRow.qml" line="240"/>
<location filename="../components/MediaRow.qml" line="240"/>
<source>Remove from play queue</source>
<translation></translation>
</message>
Expand Down Expand Up @@ -270,80 +270,86 @@
<context>
<name>SettingsView</name>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="28"/>
<location filename="../views/SettingsView.qml" line="28"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="29"/>
<location filename="../views/SettingsView.qml" line="29"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="55"/>
<location filename="../views/SettingsView.qml" line="55"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="56"/>
<location filename="../views/SettingsView.qml" line="56"/>
<source>Language</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="103"/>
<location filename="../views/SettingsView.qml" line="103"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="104"/>
<location filename="../views/SettingsView.qml" line="104"/>
<source>Color Theme</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="119"/>
<location filename="../views/SettingsView.qml" line="119"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="120"/>
<location filename="../views/SettingsView.qml" line="120"/>
<source>Light</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="122"/>
<location filename="../views/SettingsView.qml" line="122"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="123"/>
<location filename="../views/SettingsView.qml" line="123"/>
<source>Dark</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="42"/>
<location filename="../views/SettingsView.qml" line="42"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="43"/>
<location filename="../views/SettingsView.qml" line="43"/>
<source>Theme Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="152"/>
<location filename="../views/SettingsView.qml" line="152"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="153"/>
<location filename="../views/SettingsView.qml" line="153"/>
<source>System tray theme</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="168"/>
<location filename="../views/SettingsView.qml" line="168"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="169"/>
<location filename="../views/SettingsView.qml" line="169"/>
<source>Colorful</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="171"/>
<location filename="../views/SettingsView.qml" line="171"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="172"/>
<location filename="../views/SettingsView.qml" line="172"/>
<source>Flat</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="201"/>
<location filename="../views/SettingsView.qml" line="201"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="202"/>
<location filename="../views/SettingsView.qml" line="202"/>
<source>Library Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="215"/>
<location filename="../views/SettingsView.qml" line="215"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="216"/>
<location filename="../views/SettingsView.qml" line="216"/>
<source>Library Folders</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="223"/>
<location filename="../views/SettingsView.qml" line="223"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="229"/>
<location filename="../views/SettingsView.qml" line="229"/>
<source>Scan folder recursively</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="241"/>
<location filename="../views/SettingsView.qml" line="241"/>
<source>Add</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="299"/>
<location filename="../views/SettingsView.qml" line="299"/>
<location filename="../../../build/src/qml/BitWave/ui/views/SettingsView.qml" line="314"/>
<location filename="../views/SettingsView.qml" line="314"/>
<source>Open Media Folder</source>
<translation></translation>
</message>
Expand All @@ -369,20 +375,20 @@
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/components/SideBar.qml" line="130"/>
<location filename="../components/SideBar.qml" line="130"/>
<location filename="../../../build/src/qml/BitWave/ui/components/SideBar.qml" line="142"/>
<location filename="../components/SideBar.qml" line="142"/>
<source>Playlist name</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/components/SideBar.qml" line="134"/>
<location filename="../components/SideBar.qml" line="134"/>
<location filename="../../../build/src/qml/BitWave/ui/components/SideBar.qml" line="146"/>
<location filename="../components/SideBar.qml" line="146"/>
<source>Create</source>
<translation></translation>
</message>
<message>
<location filename="../../../build/src/qml/BitWave/ui/components/SideBar.qml" line="246"/>
<location filename="../components/SideBar.qml" line="246"/>
<location filename="../../../build/src/qml/BitWave/ui/components/SideBar.qml" line="260"/>
<location filename="../components/SideBar.qml" line="260"/>
<source>Settings</source>
<translation></translation>
</message>
Expand Down
Binary file modified src/ui/i18n/zh_CN.qm
Binary file not shown.
Loading

0 comments on commit 2f536b9

Please sign in to comment.