log selected_audio_device

This commit is contained in:
Zach Pomerantz 2017-06-14 17:17:15 -04:00
parent 5f236bd025
commit 837f37220a
2 changed files with 41 additions and 16 deletions

View file

@ -17,12 +17,17 @@
#include "AudioClient.h" #include "AudioClient.h"
#include "Audio.h" #include "Audio.h"
#include "UserActivityLogger.h"
using namespace scripting; using namespace scripting;
static Setting::Handle<QString> desktopInputDeviceSetting { QStringList { Audio::AUDIO, Audio::DESKTOP, "INPUT" }}; static const INPUT = "INPUT";
static Setting::Handle<QString> desktopOutputDeviceSetting { QStringList { Audio::AUDIO, Audio::DESKTOP, "OUTPUT" }}; static const OUTPUT= "OUTPUT";
static Setting::Handle<QString> hmdInputDeviceSetting { QStringList { Audio::AUDIO, Audio::HMD, "INPUT" }};
static Setting::Handle<QString> hmdOutputDeviceSetting { QStringList { Audio::AUDIO, Audio::HMD, "OUTPUT" }}; static Setting::Handle<QString> desktopInputDeviceSetting { QStringList { Audio::AUDIO, Audio::DESKTOP, INPUT }};
static Setting::Handle<QString> desktopOutputDeviceSetting { QStringList { Audio::AUDIO, Audio::DESKTOP, OUTPUT }};
static Setting::Handle<QString> hmdInputDeviceSetting { QStringList { Audio::AUDIO, Audio::HMD, INPUT }};
static Setting::Handle<QString> hmdOutputDeviceSetting { QStringList { Audio::AUDIO, Audio::HMD, OUTPUT }};
const bool hmdSetting = true; const bool hmdSetting = true;
const bool desktopSetting = false; const bool desktopSetting = false;
@ -82,7 +87,7 @@ bool AudioDeviceList::setData(const QModelIndex& index, const QVariant& value, i
if (success) { if (success) {
device.selected = true; device.selected = true;
emit deviceSelected(device.info); emit deviceSelected(device.info, _selectedDevice);
emit deviceChanged(device.info); emit deviceChanged(device.info);
} }
} }
@ -109,7 +114,7 @@ void AudioDeviceList::resetDevice(bool contextIsHMD, const QString& device) {
// the selection failed - reset it // the selection failed - reset it
if (!success) { if (!success) {
emit deviceSelected(QAudioDeviceInfo()); emit deviceSelected();
} }
} }
@ -183,11 +188,11 @@ AudioDevices::AudioDevices(bool& contextIsHMD) : _contextIsHMD(contextIsHMD) {
_inputs.onDevicesChanged(client->getAudioDevices(QAudio::AudioInput)); _inputs.onDevicesChanged(client->getAudioDevices(QAudio::AudioInput));
_outputs.onDevicesChanged(client->getAudioDevices(QAudio::AudioOutput)); _outputs.onDevicesChanged(client->getAudioDevices(QAudio::AudioOutput));
connect(&_inputs, &AudioDeviceList::deviceSelected, [&](const QAudioDeviceInfo& device) { connect(&_inputs, &AudioDeviceList::deviceSelected, [&](const QAudioDeviceInfo& device, const QAudioDeviceInfo& previousDevice) {
onDeviceSelected(QAudio::AudioInput, device); onDeviceSelected(QAudio::AudioInput, device, previousDevice);
}); });
connect(&_outputs, &AudioDeviceList::deviceSelected, [&](const QAudioDeviceInfo& device) { connect(&_outputs, &AudioDeviceList::deviceSelected, [&](const QAudioDeviceInfo& device, const QAudioDeviceInfo& previousDevice) {
onDeviceSelected(QAudio::AudioOutput, device); onDeviceSelected(QAudio::AudioOutput, device, previousDevice);
}); });
} }
@ -199,7 +204,7 @@ void AudioDevices::onContextChanged(const QString& context) {
_outputs.resetDevice(_contextIsHMD, output); _outputs.resetDevice(_contextIsHMD, output);
} }
void AudioDevices::onDeviceSelected(QAudio::Mode mode, const QAudioDeviceInfo& device) { void AudioDevices::onDeviceSelected(QAudio::Mode mode, const QAudioDeviceInfo& device, const QAudioDeviceInfo& previousDevice) {
QString deviceName; QString deviceName;
if (!device.isNull()) { if (!device.isNull()) {
deviceName = device.deviceName(); deviceName = device.deviceName();
@ -207,14 +212,33 @@ void AudioDevices::onDeviceSelected(QAudio::Mode mode, const QAudioDeviceInfo& d
auto& setting = deviceSettings[_contextIsHMD][mode]; auto& setting = deviceSettings[_contextIsHMD][mode];
// retrieve the prior device // check for a previous device
auto lastDeviceName = setting.get(); auto wasDefault = setting.get().isNull();
// store the selected device // store the selected device
setting.set(deviceName); setting.set(deviceName);
// TODO: log the selected device // log the selected device
if (!device.isNull()) { if (!device.isNull()) {
QJsonObject data;
const QString MODE = "audio_mode";
data[MODE] = mode == QAudio::AudioInput ? INPUT : OUTPUT;
const QString CONTEXT = "display_mode";
data[CONTEXT] = _contextIsHMD ? Audio::HMD : Audio::DESKTOP;
const QString DISPLAY = "display_device";
data[DISPLAY] = qApp->getActiveDisplayPlugin()->getName();
const QString DEVICE = "device";
const QString PREVIOUS_DEVICE = "previous_device";
const QString WAS_DEFAULT = "was_default";
data[DEVICE] = deviceName;
data[PREVIOUS_DEVICE] = previousDevice.deviceName();
data[WAS_DEFAULT] = wasDefault;
UserActivityLogger::getInstance()->logAction("selected_audio_device", data);
} }
} }

View file

@ -43,7 +43,8 @@ public:
void resetDevice(bool contextIsHMD, const QString& device); void resetDevice(bool contextIsHMD, const QString& device);
signals: signals:
void deviceSelected(const QAudioDeviceInfo& device); void deviceSelected(const QAudioDeviceInfo& device = QAudioDeviceInfo(),
const QAudioDeviceInfo& previousDevice = QAudioDeviceInfo());
void deviceChanged(const QAudioDeviceInfo& device); void deviceChanged(const QAudioDeviceInfo& device);
private slots: private slots:
@ -76,7 +77,7 @@ signals:
private slots: private slots:
void onContextChanged(const QString& context); void onContextChanged(const QString& context);
void onDeviceSelected(QAudio::Mode mode, const QAudioDeviceInfo& device); void onDeviceSelected(QAudio::Mode mode, const QAudioDeviceInfo& device, const QAudioDeviceInfo& previousDevice);
void onDeviceChanged(QAudio::Mode mode, const QAudioDeviceInfo& device); void onDeviceChanged(QAudio::Mode mode, const QAudioDeviceInfo& device);
void onDevicesChanged(QAudio::Mode mode, const QList<QAudioDeviceInfo>& devices); void onDevicesChanged(QAudio::Mode mode, const QList<QAudioDeviceInfo>& devices);