File indexing completed on 2024-04-28 04:49:02

0001 /*
0002    SPDX-FileCopyrightText: 2018 (c) Alexander Stippich <a.stippich@gmx.net>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #ifndef FILEBROWSERMODEL_H
0008 #define FILEBROWSERMODEL_H
0009 
0010 #include "elisaLib_export.h"
0011 
0012 #include "elisautils.h"
0013 #include "datatypes.h"
0014 
0015 #include <KDirModel>
0016 
0017 class MusicListenersManager;
0018 class DatabaseInterface;
0019 
0020 class ELISALIB_EXPORT FileBrowserModel : public KDirModel
0021 {
0022     Q_OBJECT
0023 
0024     Q_PROPERTY(bool isBusy READ isBusy NOTIFY isBusyChanged)
0025 
0026 public:
0027 
0028     explicit FileBrowserModel(QObject *parent = nullptr);
0029 
0030     ~FileBrowserModel() override;
0031 
0032     [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
0033 
0034     [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0035 
0036     void setUrl(const QUrl &url);
0037 
0038     [[nodiscard]] bool isBusy() const;
0039 
0040 Q_SIGNALS:
0041 
0042     void isBusyChanged();
0043 
0044 public Q_SLOTS:
0045 
0046     void initialize(MusicListenersManager *manager, DatabaseInterface *database,
0047                     ElisaUtils::PlayListEntryType modelType, ElisaUtils::FilterType filter,
0048                     const QString &genre, const QString &artist, qulonglong databaseId,
0049                     const QUrl &pathFilter);
0050 
0051     void initializeByData(MusicListenersManager *manager, DatabaseInterface *database,
0052                           ElisaUtils::PlayListEntryType modelType, ElisaUtils::FilterType filter,
0053                           const DataTypes::DataType &dataFilter);
0054 };
0055 
0056 
0057 
0058 #endif //FILEBROWSERMODEL_H