File indexing completed on 2024-04-21 05:48:31
0001 /*********************************************************************** 0002 * SPDX-FileCopyrightText: 2003-2004 Max Howell <max.howell@methylblue.com> 0003 * SPDX-FileCopyrightText: 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org> 0004 * SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0007 ***********************************************************************/ 0008 0009 #pragma once 0010 0011 #include <QByteArray> 0012 #include <QMutex> 0013 #include <QThread> 0014 0015 class Folder; 0016 0017 namespace Filelight 0018 { 0019 class ScanManager; 0020 0021 class LocalLister : public QThread 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 LocalLister(const QString &path, QList<std::shared_ptr<Folder>> *cachedTrees, ScanManager *parent); 0027 0028 static void readMounts(); 0029 0030 Q_SIGNALS: 0031 void branchCompleted(std::shared_ptr<Folder> tree); 0032 0033 private: 0034 QString m_path; 0035 QMutex m_treeMutex; 0036 QList<std::shared_ptr<Folder>> *m_trees; 0037 ScanManager *m_parent; 0038 0039 private: 0040 void run() override; 0041 std::shared_ptr<Folder> scan(const QByteArray &, const QByteArray &); 0042 0043 private: 0044 static QStringList s_localMounts; 0045 static QStringList s_remoteMounts; // TODO namespace 0046 }; 0047 } // namespace Filelight 0048 0049 namespace std 0050 { 0051 template<> 0052 struct default_delete<Filelight::LocalLister> { 0053 void operator()(Filelight::LocalLister *ptr) const 0054 { 0055 // It's a QThread, delete on its own event loop, not the deleters. Ensures against data races. 0056 ptr->deleteLater(); 0057 } 0058 }; 0059 } // namespace std