1 /* 2 This file is part of the KDE project 3 SPDX-FileCopyrightText: 2007 Kevin Ottens <ervin@kde.org> 4 5 SPDX-License-Identifier: LGPL-2.0-only 6 */ 7 8 #ifndef KFILEPLACESITEM_P_H 9 #define KFILEPLACESITEM_P_H 10 11 #include "kfileplacesmodel.h" 12 #include <KBookmark> 13 #include <QObject> 14 #include <QPointer> 15 #include <QStringList> 16 #include <QUrl> 17 #include <solid/device.h> 18 19 class KDirLister; 20 namespace Solid 21 { 22 class StorageAccess; 23 class StorageVolume; 24 class StorageDrive; 25 class NetworkShare; 26 class OpticalDisc; 27 class PortableMediaPlayer; 28 } 29 30 class KFilePlacesItem : public QObject 31 { 32 Q_OBJECT 33 public: 34 enum GroupType { 35 PlacesType, 36 RemoteType, 37 RecentlySavedType, 38 SearchForType, 39 DevicesType, 40 RemovableDevicesType, 41 TagsType, 42 }; 43 44 KFilePlacesItem(KBookmarkManager *manager, const QString &address, const QString &udi, KFilePlacesModel *parent); 45 ~KFilePlacesItem() override; 46 47 QString id() const; 48 49 bool isDevice() const; 50 KBookmark bookmark() const; 51 void setBookmark(const KBookmark &bookmark); 52 Solid::Device device() const; 53 QVariant data(int role) const; 54 KFilePlacesModel::GroupType groupType() const; 55 bool isHidden() const; 56 void setHidden(bool hide); 57 58 bool hasSupportedScheme(const QStringList &schemes) const; 59 60 static KBookmark 61 createBookmark(KBookmarkManager *manager, const QString &label, const QUrl &url, const QString &iconName, KFilePlacesItem *after = nullptr); 62 static KBookmark createSystemBookmark(KBookmarkManager *manager, 63 const char *translationContext, 64 const QByteArray &untranslatedLabel, 65 const QUrl &url, 66 const QString &iconName, 67 const KBookmark &after = KBookmark()); 68 static KBookmark createDeviceBookmark(KBookmarkManager *manager, const QString &udi); 69 static KBookmark createTagBookmark(KBookmarkManager *manager, const QString &tag); 70 71 Q_SIGNALS: 72 void itemChanged(const QString &id); 73 74 private Q_SLOTS: 75 void onAccessibilityChanged(bool); 76 77 private: 78 QVariant bookmarkData(int role) const; 79 QVariant deviceData(int role) const; 80 81 QString iconNameForBookmark(const KBookmark &bookmark) const; 82 83 static QString generateNewId(); 84 bool updateDeviceInfo(const QString &udi); 85 86 KBookmarkManager *m_manager; 87 KBookmark m_bookmark; 88 bool m_folderIsEmpty; 89 bool m_isCdrom; 90 bool m_isAccessible; 91 QString m_text; 92 Solid::Device m_device; 93 QPointer<Solid::StorageAccess> m_access; 94 QPointer<Solid::StorageVolume> m_volume; 95 QPointer<Solid::StorageDrive> m_drive; 96 QPointer<Solid::OpticalDisc> m_disc; 97 QPointer<Solid::PortableMediaPlayer> m_player; 98 QPointer<Solid::NetworkShare> m_networkShare; 99 QString m_deviceIconName; 100 QStringList m_emblems; 101 QString m_groupName; 102 }; 103 104 #endif 105