summaryrefslogtreecommitdiff
path: root/src/audio/devices.cpp
blob: 5e7720b997b8a587e8ca588df6ab0304dca919d3 (plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifdef WITH_VOICE

// clang-format off

#include "devices.hpp"

// clang-format on

AudioDevices::AudioDevices()
    : m_playback(Gtk::ListStore::create(m_playback_columns))
    , m_capture(Gtk::ListStore::create(m_capture_columns)) {
}

Glib::RefPtr<Gtk::ListStore> AudioDevices::GetPlaybackDeviceModel() {
    return m_playback;
}

Glib::RefPtr<Gtk::ListStore> AudioDevices::GetCaptureDeviceModel() {
    return m_capture;
}

void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_count, ma_device_info *pCapture, ma_uint32 capture_count) {
    m_playback->clear();

    for (ma_uint32 i = 0; i < playback_count; i++) {
        auto &d = pPlayback[i];
        auto row = *m_playback->append();
        row[m_playback_columns.Name] = d.name;
        row[m_playback_columns.DeviceID] = d.id;
    }

    m_capture->clear();

    for (ma_uint32 i = 0; i < capture_count; i++) {
        auto &d = pCapture[i];
        auto row = *m_capture->append();
        row[m_capture_columns.Name] = d.name;
        row[m_capture_columns.DeviceID] = d.id;
    }
}

std::optional<ma_device_id> AudioDevices::GetPlaybackDeviceIDFromModel(const Gtk::TreeModel::iterator &iter) const {
    if (iter) {
        return static_cast<ma_device_id>((*iter)[m_playback_columns.DeviceID]);
    } else {
        return std::nullopt;
    }
}

std::optional<ma_device_id> AudioDevices::GetCaptureDeviceIDFromModel(const Gtk::TreeModel::iterator &iter) const {
    if (iter) {
        return static_cast<ma_device_id>((*iter)[m_capture_columns.DeviceID]);
    } else {
        return std::nullopt;
    }
}

AudioDevices::PlaybackColumns::PlaybackColumns() {
    add(Name);
    add(DeviceID);
}

AudioDevices::CaptureColumns::CaptureColumns() {
    add(Name);
    add(DeviceID);
}
#endif