diff --git a/src/port.h b/src/port.h --- a/src/port.h +++ b/src/port.h @@ -31,47 +31,17 @@ class Port : public Profile { Q_OBJECT - Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged) + public: - enum Availability { - Unknown, - Available, - Unavailable - }; - Q_ENUM(Availability) Port(QObject *parent); virtual ~Port(); template void setInfo(const PAInfo *info) { Profile::setInfo(info); - - Availability newAvailability; - switch (info->available) { - case PA_PORT_AVAILABLE_NO: - newAvailability = Unavailable; - break; - case PA_PORT_AVAILABLE_YES: - newAvailability = Available; - break; - default: - newAvailability = Unknown; - } - if (m_availability != newAvailability) { - m_availability = newAvailability; - emit availabilityChanged(); - } } - - Availability availability() const; - -signals: - void availabilityChanged(); - -private: - Availability m_availability; }; } // QPulseAudio diff --git a/src/port.cpp b/src/port.cpp --- a/src/port.cpp +++ b/src/port.cpp @@ -25,17 +25,11 @@ Port::Port(QObject *parent) : Profile(parent) - , m_availability(Unknown) { } Port::~Port() { } -Port::Availability Port::availability() const -{ - return m_availability; -} - } // QPulseAudio diff --git a/src/profile.h b/src/profile.h --- a/src/profile.h +++ b/src/profile.h @@ -33,7 +33,16 @@ Q_PROPERTY(QString name READ name NOTIFY nameChanged) Q_PROPERTY(QString description READ description NOTIFY descriptionChanged) Q_PROPERTY(quint32 priority READ priority NOTIFY priorityChanged) + Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged) public: + + enum Availability { + Unknown, + Available, + Unavailable + }; + Q_ENUM(Availability) + Profile(QObject *parent); virtual ~Profile(); @@ -58,21 +67,30 @@ m_priority = info->priority; emit priorityChanged(); } + + Availability newAvailability = info->available ? Available : Unavailable; + if (m_availability != newAvailability) { + m_availability = newAvailability; + emit availabilityChanged(); + } } QString name() const; QString description() const; quint32 priority() const; + Availability availability() const; signals: void nameChanged(); void descriptionChanged(); void priorityChanged(); + void availabilityChanged(); private: QString m_name; QString m_description; quint32 m_priority; + Availability m_availability; }; } // QPulseAudio diff --git a/src/profile.cpp b/src/profile.cpp --- a/src/profile.cpp +++ b/src/profile.cpp @@ -28,6 +28,7 @@ , m_name() , m_description() , m_priority(0) + , m_availability(Unknown) { } @@ -50,4 +51,9 @@ return m_priority; } +Profile::Availability Profile::availability() const +{ + return m_availability; +} + } // QPulseAudio diff --git a/src/qml/plugin.cpp b/src/qml/plugin.cpp --- a/src/qml/plugin.cpp +++ b/src/qml/plugin.cpp @@ -28,7 +28,7 @@ #include "source.h" #include "context.h" #include "modulemanager.h" -#include "port.h" +#include "profile.h" #include "globalactioncollection.h" #include "volumeosd.h" @@ -55,7 +55,7 @@ qmlRegisterType(uri, 0, 1, "SourceOutputModel"); qmlRegisterType(uri, 0, 1, "StreamRestoreModel"); qmlRegisterType(uri, 0, 1, "ModuleModel"); - qmlRegisterUncreatableType(uri, 0, 1, "Port", QString()); + qmlRegisterUncreatableType(uri, 0, 1, "Profile", QString()); qmlRegisterType(uri, 0, 1, "GlobalAction"); qmlRegisterType(uri, 0, 1, "GlobalActionCollection"); qmlRegisterType(uri, 0, 1, "VolumeOSD");