-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsessionmixerlistwidget.cpp
48 lines (35 loc) · 1.41 KB
/
sessionmixerlistwidget.cpp
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
#include "sessionmixerlistwidget.h"
#include "sessioncreationsource.h"
#include <QDebug>
#include <QVBoxLayout>
#include "util.h"
#include "sessionvolumemodel.h"
#include "devicemixerwidget.h"
class SessionMixerListWidget::Internal {
public:
SessionCreationSource *sessionSource;
QVBoxLayout *list;
Internal();
virtual ~Internal();
};
SessionMixerListWidget::SessionMixerListWidget(IAudioSessionManager2Ptr smgr)
{
stuff = std::make_unique<Internal>();
stuff->sessionSource = new SessionCreationSource(smgr, this);
stuff->list = new QVBoxLayout();
stuff->list->setContentsMargins(0,0,0,9);
stuff->list->addStretch(1);
this->setLayout(stuff->list);
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
connect(stuff->sessionSource, &SessionCreationSource::sessionExists, this, &SessionMixerListWidget::sessionExists);
stuff->sessionSource->triggerEnumeration();
}
SessionMixerListWidget::~SessionMixerListWidget() { }
SessionMixerListWidget::Internal::Internal() { }
SessionMixerListWidget::Internal::~Internal() { }
void SessionMixerListWidget::sessionExists(IAudioSessionControl2 *s) {
IAudioSessionControl2Ptr session(s, true);
QSharedPointer<AbstractVolumeModel> svm(new SessionVolumeModel(session));
int lastindex = stuff->list->count();
stuff->list->insertWidget(lastindex -1, new DeviceMixerWidget(svm, this));
}