File indexing completed on 2024-05-19 05:29:59
0001 /* 0002 SPDX-FileCopyrightText: 2020 Harald Sitter <sitter@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 #pragma once 0007 0008 #include <QAbstractListModel> 0009 #include <QList> 0010 #include <Solid/Device> 0011 0012 /** 0013 * Model of cifs mount entries. Implementing properties 0014 * as columns rather than roles. 0015 */ 0016 class SmbMountModel : public QAbstractListModel 0017 { 0018 Q_OBJECT 0019 public: 0020 enum class Role { 0021 Share = Qt::UserRole + 1, 0022 Path, 0023 Accessible, 0024 }; 0025 Q_ENUM(Role) 0026 0027 explicit SmbMountModel(QObject *parent = nullptr); 0028 ~SmbMountModel() override; 0029 0030 int rowCount(const QModelIndex &parent) const final; 0031 QVariant data(const QModelIndex &index, int intRole) const final; 0032 bool hasChildren(const QModelIndex &parent) const final; 0033 0034 QHash<int, QByteArray> roleNames() const final; 0035 0036 private slots: 0037 void addDevice(const QString &udi); 0038 void removeDevice(const QString &udi); 0039 void reloadData(); 0040 0041 private: 0042 inline QList<Solid::Device>::const_iterator deviceForUdi(const QString &udi) const 0043 { 0044 return std::find_if(m_devices.constBegin(), m_devices.constEnd(), [&udi](const Solid::Device &device) { 0045 return device.udi() == udi; 0046 }); 0047 } 0048 0049 QList<Solid::Device> m_devices; 0050 };