File indexing completed on 2024-04-28 15:26:41
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 2007 Kevin Ottens <ervin@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only 0006 */ 0007 0008 #ifndef KFILEPLACESITEM_P_H 0009 #define KFILEPLACESITEM_P_H 0010 0011 #include "kfileplacesmodel.h" 0012 #include <KBookmark> 0013 #include <QObject> 0014 #include <QPointer> 0015 #include <QStringList> 0016 #include <QUrl> 0017 #include <solid/device.h> 0018 0019 class KDirLister; 0020 namespace Solid 0021 { 0022 class StorageAccess; 0023 class StorageVolume; 0024 class StorageDrive; 0025 class NetworkShare; 0026 class OpticalDisc; 0027 class PortableMediaPlayer; 0028 } 0029 0030 class KFilePlacesItem : public QObject 0031 { 0032 Q_OBJECT 0033 public: 0034 KFilePlacesItem(KBookmarkManager *manager, const QString &address, const QString &udi, KFilePlacesModel *parent); 0035 ~KFilePlacesItem() override; 0036 0037 QString id() const; 0038 0039 bool isDevice() const; 0040 KFilePlacesModel::DeviceAccessibility deviceAccessibility() const; 0041 bool isTeardownAllowed() const; 0042 bool isTeardownOverlayRecommended() const; 0043 bool isEjectAllowed() const; 0044 KBookmark bookmark() const; 0045 void setBookmark(const KBookmark &bookmark); 0046 Solid::Device device() const; 0047 QVariant data(int role) const; 0048 KFilePlacesModel::GroupType groupType() const; 0049 bool isHidden() const; 0050 void setHidden(bool hide); 0051 0052 bool hasSupportedScheme(const QStringList &schemes) const; 0053 0054 static KBookmark 0055 createBookmark(KBookmarkManager *manager, const QString &label, const QUrl &url, const QString &iconName, KFilePlacesItem *after = nullptr); 0056 /** 0057 * @param untranslatedLabel text for label. If to be translated, should be set by kli18nc("KFile System Bookmarks", "Label text").untranslatedText(). 0058 */ 0059 static KBookmark createSystemBookmark(KBookmarkManager *manager, 0060 const char *untranslatedLabel, 0061 const QUrl &url, 0062 const QString &iconName, 0063 const KBookmark &after = KBookmark()); 0064 static KBookmark createDeviceBookmark(KBookmarkManager *manager, const QString &udi); 0065 static KBookmark createTagBookmark(KBookmarkManager *manager, const QString &tag); 0066 0067 Q_SIGNALS: 0068 void itemChanged(const QString &id, const QVector<int> &roles = {}); 0069 0070 private Q_SLOTS: 0071 void onAccessibilityChanged(bool); 0072 0073 private: 0074 QVariant bookmarkData(int role) const; 0075 QVariant deviceData(int role) const; 0076 0077 QString iconNameForBookmark(const KBookmark &bookmark) const; 0078 0079 static QString generateNewId(); 0080 bool updateDeviceInfo(const QString &udi); 0081 0082 KBookmarkManager *m_manager; 0083 KBookmark m_bookmark; 0084 bool m_folderIsEmpty; 0085 bool m_isCdrom; 0086 bool m_isAccessible; 0087 bool m_isTeardownAllowed; 0088 bool m_isTeardownOverlayRecommended; 0089 bool m_isTeardownInProgress; 0090 bool m_isSetupInProgress; 0091 QString m_text; 0092 Solid::Device m_device; 0093 QPointer<Solid::StorageAccess> m_access; 0094 QPointer<Solid::StorageVolume> m_volume; 0095 QPointer<Solid::StorageDrive> m_drive; 0096 QPointer<Solid::OpticalDisc> m_disc; 0097 QPointer<Solid::PortableMediaPlayer> m_player; 0098 QPointer<Solid::NetworkShare> m_networkShare; 0099 QString m_deviceIconName; 0100 QStringList m_emblems; 0101 QString m_groupName; 0102 mutable QString m_deviceDisplayName; 0103 }; 0104 0105 #endif