Changeset View
Changeset View
Standalone View
Standalone View
src/profile.h
Show All 27 Lines | |||||
28 | { | 28 | { | ||
29 | 29 | | |||
30 | class Profile : public QObject | 30 | class Profile : public QObject | ||
31 | { | 31 | { | ||
32 | Q_OBJECT | 32 | Q_OBJECT | ||
33 | Q_PROPERTY(QString name READ name NOTIFY nameChanged) | 33 | Q_PROPERTY(QString name READ name NOTIFY nameChanged) | ||
34 | Q_PROPERTY(QString description READ description NOTIFY descriptionChanged) | 34 | Q_PROPERTY(QString description READ description NOTIFY descriptionChanged) | ||
35 | Q_PROPERTY(quint32 priority READ priority NOTIFY priorityChanged) | 35 | Q_PROPERTY(quint32 priority READ priority NOTIFY priorityChanged) | ||
36 | Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged) | ||||
36 | public: | 37 | public: | ||
38 | | ||||
39 | enum Availability { | ||||
40 | Unknown, | ||||
41 | Available, | ||||
42 | Unavailable | ||||
43 | }; | ||||
44 | Q_ENUM(Availability) | ||||
45 | | ||||
37 | Profile(QObject *parent); | 46 | Profile(QObject *parent); | ||
38 | virtual ~Profile(); | 47 | virtual ~Profile(); | ||
39 | 48 | | |||
40 | template<typename PAInfo> | 49 | template<typename PAInfo> | ||
41 | void setInfo(const PAInfo *info) | 50 | void setInfo(const PAInfo *info) | ||
42 | { | 51 | { | ||
43 | // Description is optional. Name not so much as we need some ID. | 52 | // Description is optional. Name not so much as we need some ID. | ||
44 | Q_ASSERT(info->name); | 53 | Q_ASSERT(info->name); | ||
45 | QString infoName = QString::fromUtf8(info->name); | 54 | QString infoName = QString::fromUtf8(info->name); | ||
46 | if (m_name != infoName) { | 55 | if (m_name != infoName) { | ||
47 | m_name = infoName; | 56 | m_name = infoName; | ||
48 | emit nameChanged(); | 57 | emit nameChanged(); | ||
49 | } | 58 | } | ||
50 | if (info->description) { | 59 | if (info->description) { | ||
51 | QString infoDescription = QString::fromUtf8(info->description); | 60 | QString infoDescription = QString::fromUtf8(info->description); | ||
52 | if (m_description != infoDescription) { | 61 | if (m_description != infoDescription) { | ||
53 | m_description = infoDescription; | 62 | m_description = infoDescription; | ||
54 | emit descriptionChanged(); | 63 | emit descriptionChanged(); | ||
55 | } | 64 | } | ||
56 | } | 65 | } | ||
57 | if (m_priority != info->priority) { | 66 | if (m_priority != info->priority) { | ||
58 | m_priority = info->priority; | 67 | m_priority = info->priority; | ||
59 | emit priorityChanged(); | 68 | emit priorityChanged(); | ||
60 | } | 69 | } | ||
70 | | ||||
71 | Availability newAvailability; | ||||
72 | if (info->available) { | ||||
73 | newAvailability = Available; | ||||
74 | } else { | ||||
75 | newAvailability = Unavailable; | ||||
76 | } | ||||
77 | | ||||
78 | if (m_availability != newAvailability) { | ||||
79 | m_availability = newAvailability; | ||||
80 | emit availabilityChanged(); | ||||
81 | } | ||||
61 | } | 82 | } | ||
62 | 83 | | |||
63 | QString name() const; | 84 | QString name() const; | ||
64 | QString description() const; | 85 | QString description() const; | ||
65 | quint32 priority() const; | 86 | quint32 priority() const; | ||
87 | Availability availability() const; | ||||
66 | 88 | | |||
67 | signals: | 89 | signals: | ||
68 | void nameChanged(); | 90 | void nameChanged(); | ||
69 | void descriptionChanged(); | 91 | void descriptionChanged(); | ||
70 | void priorityChanged(); | 92 | void priorityChanged(); | ||
93 | void availabilityChanged(); | ||||
71 | 94 | | |||
72 | private: | 95 | private: | ||
73 | QString m_name; | 96 | QString m_name; | ||
74 | QString m_description; | 97 | QString m_description; | ||
75 | quint32 m_priority; | 98 | quint32 m_priority; | ||
99 | | ||||
100 | protected: | ||||
101 | Availability m_availability; | ||||
76 | }; | 102 | }; | ||
77 | 103 | | |||
78 | } // QPulseAudio | 104 | } // QPulseAudio | ||
79 | 105 | | |||
80 | #endif // PROFILE_H | 106 | #endif // PROFILE_H |