summaryrefslogtreecommitdiffstats
path: root/app/pacontrolmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'app/pacontrolmodel.h')
-rw-r--r--app/pacontrolmodel.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/app/pacontrolmodel.h b/app/pacontrolmodel.h
new file mode 100644
index 0000000..aa34a79
--- /dev/null
+++ b/app/pacontrolmodel.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2016 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <pulse/pulseaudio.h>
+
+#ifndef __cplusplus
+extern void add_one_control(void *ctx, int, const char *, int, int, const char *, int);
+#else
+extern "C" void add_one_control(void *ctx, int, const char *, int, int, const char *, int);
+
+#include <QAbstractListModel>
+#include <QStringList>
+
+class PaControlModel;
+
+class PaControl
+{
+ public:
+ PaControl(const quint32 &index, const QString &desc, const quint32 &type, const quint32 &channel, const QString &cdesc, const quint32 &volume);
+
+ quint32 cindex() const;
+ QString desc() const;
+ quint32 type() const;
+ quint32 channel() const;
+ QString cdesc() const;
+ quint32 volume() const;
+ void setCIndex(const QVariant&);
+ void setDesc(const QVariant&);
+ void setType(const QVariant&);
+ void setChannel(const QVariant&);
+ void setCDesc(const QVariant&);
+ void setVolume(pa_context *, const QVariant&);
+
+ private:
+ quint32 m_cindex;
+ QString m_desc;
+ quint32 m_type;
+ quint32 m_channel;
+ QString m_cdesc;
+ quint32 m_volume;
+};
+
+class PaControlModel : public QAbstractListModel
+{
+ Q_OBJECT
+ public:
+ enum PaControlRoles {
+ CIndexRole = Qt::UserRole + 1,
+ DescRole,
+ TypeRole,
+ ChannelRole,
+ CDescRole,
+ VolumeRole
+ };
+
+ PaControlModel(QObject *parent = 0);
+
+ void addControl(const PaControl &control);
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+
+ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
+
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ protected:
+ QHash<int, QByteArray> roleNames() const;
+ private:
+ QList<PaControl> m_controls;
+ pa_context *pa_ctx;
+};
+#endif // __cplusplus