-
Notifications
You must be signed in to change notification settings - Fork 1
/
upnpdeviceslistmodel.h
104 lines (59 loc) · 2.1 KB
/
upnpdeviceslistmodel.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#ifndef UPNPDEVICESLISTMODEL_H
#define UPNPDEVICESLISTMODEL_H
#include <QListView>
#include <QAbstractListModel>
#include <QListWidget>
#include <HUpnpCore/HDeviceInfo>
#include <HUpnpCore/HClientDevice>
#include <HUpnpCore/HServiceInfo>
class UpnpDeviceRecord
{
public:
UpnpDeviceRecord(const Herqq::Upnp::HClientDevice* device, int level=0);
UpnpDeviceRecord(const UpnpDeviceRecord&);
UpnpDeviceRecord& operator=(const UpnpDeviceRecord&);
const Herqq::Upnp::HDeviceInfo& deviceInfo() const
{ return deviceInfo_; }
const QList<Herqq::Upnp::HServiceInfo> services() const
{ return services_; }
bool isMobileDevice() const
{ return isMobileDevice_; }
int levelOfEmbedding() const
{ return level_; }
private:
Herqq::Upnp::HDeviceInfo deviceInfo_;
QList<Herqq::Upnp::HServiceInfo> services_;
bool isMobileDevice_;
int level_;
public:
static const QString const_MobileDevice;
};
class UpnpDevicesListModel : public QAbstractListModel
{
Q_OBJECT
public:
explicit UpnpDevicesListModel(QObject *parent = 0);
int rowCount(const QModelIndex & = QModelIndex()) const
{ return items.count(); }
QVariant data(const QModelIndex& index, int role) const;
const UpnpDeviceRecord& operator[](int i) const
{ return items[i]; }
const UpnpDeviceRecord& at(int i) const
{ return items[i]; }
bool getOnlyMobile()
{ return onlyMobile; }
void setOnlyMobile(bool value)
{ onlyMobile=value; }
signals:
public slots:
bool addIfApply(const Herqq::Upnp::HClientDevice* device);
bool remove(const Herqq::Upnp::HClientDevice* device);
void clear();
private:
QList<UpnpDeviceRecord>::const_iterator findSameItem(const Herqq::Upnp::HDeviceInfo& item);
static void appendEmbedded(QList<UpnpDeviceRecord>& records, const Herqq::Upnp::HClientDevice* device, int level);
private:
QList<UpnpDeviceRecord> items;
bool onlyMobile;
};
#endif // UPNPDEVICESLISTMODEL_H