summaryrefslogtreecommitdiffstats
path: root/src/devicewidget.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/devicewidget.cc')
-rw-r--r--src/devicewidget.cc245
1 files changed, 0 insertions, 245 deletions
diff --git a/src/devicewidget.cc b/src/devicewidget.cc
deleted file mode 100644
index 85c856a..0000000
--- a/src/devicewidget.cc
+++ /dev/null
@@ -1,245 +0,0 @@
-/***
- This file is part of pavucontrol.
-
- Copyright 2006-2008 Lennart Poettering
- Copyright 2009 Colin Guthrie
-
- pavucontrol is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- pavucontrol is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with pavucontrol. If not, see <https://www.gnu.org/licenses/>.
-***/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <pulse/ext-device-manager.h>
-
-#include "mainwindow.h"
-#include "devicewidget.h"
-#include "channel.h"
-#include <sstream>
-#include <QAction>
-#include <QLabel>
-#include <QMessageBox>
-#include <QInputDialog>
-
-/*** DeviceWidget ***/
-DeviceWidget::DeviceWidget(MainWindow* parent, QByteArray deviceType) :
- MinimalStreamWidget(parent),
- offsetButtonEnabled(false),
- mpMainWindow(parent),
- rename{new QAction{tr("Rename device..."), this}},
- mDeviceType(deviceType) {
-
- setupUi(this);
- advancedWidget->hide();
- initPeakProgressBar(channelsGrid);
-
- timeout.setSingleShot(true);
- timeout.setInterval(100);
- connect(&timeout, &QTimer::timeout, this, &DeviceWidget::timeoutEvent);
-
- connect(muteToggleButton, &QToolButton::toggled, this, &DeviceWidget::onMuteToggleButton);
- connect(lockToggleButton, &QToolButton::toggled, this, &DeviceWidget::onLockToggleButton);
- connect(defaultToggleButton, &QToolButton::toggled, this, &DeviceWidget::onDefaultToggleButton);
-
- connect(rename, &QAction::triggered, this, &DeviceWidget::renamePopup);
- addAction(rename);
- setContextMenuPolicy(Qt::ActionsContextMenu);
-
- connect(portList, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &DeviceWidget::onPortChange);
- connect(offsetButton, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &DeviceWidget::onOffsetChange);
-
- for (auto & channel : channels)
- channel = nullptr;
-
-
- // FIXME:
-// offsetAdjustment = Gtk::Adjustment::create(0.0, -2000.0, 2000.0, 10.0, 50.0, 0.0);
-// offsetButton->configure(offsetAdjustment, 0, 2);
-}
-
-void DeviceWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
- channelMap = m;
-
- for (int i = 0; i < m.channels; i++) {
- Channel *ch = channels[i] = new Channel(channelsGrid);
- ch->channel = i;
- ch->can_decibel = can_decibel;
- ch->minimalStreamWidget = this;
- char text[64];
- snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
- ch->channelLabel->setText(QString::fromUtf8(text));
- }
- channels[m.channels-1]->last = true;
-
- lockToggleButton->setEnabled(m.channels > 1);
- hideLockedChannels(lockToggleButton->isChecked());
-}
-
-void DeviceWidget::setVolume(const pa_cvolume &v, bool force) {
- g_assert(v.channels == channelMap.channels);
-
- volume = v;
-
- if (!timeout.isActive() || force) { /* do not update the volume when a volume change is still in flux */
- for (int i = 0; i < volume.channels; i++)
- channels[i]->setVolume(volume.values[i]);
- }
-}
-
-void DeviceWidget::updateChannelVolume(int channel, pa_volume_t v) {
- pa_cvolume n;
- g_assert(channel < volume.channels);
-
- n = volume;
- if (lockToggleButton->isChecked())
- pa_cvolume_set(&n, n.channels, v);
- else
- n.values[channel] = v;
-
- setVolume(n, true);
-
- if (!timeout.isActive()) {
- timeout.start();
- }
-}
-
-void DeviceWidget::hideLockedChannels(bool hide) {
- for (int i = 0; i < channelMap.channels - 1; i++)
- channels[i]->setVisible(!hide);
-
- channels[channelMap.channels - 1]->channelLabel->setVisible(!hide);
-}
-
-void DeviceWidget::onMuteToggleButton() {
-
- lockToggleButton->setEnabled(!muteToggleButton->isChecked());
-
- for (int i = 0; i < channelMap.channels; i++)
- channels[i]->setEnabled(!muteToggleButton->isChecked());
-}
-
-void DeviceWidget::onLockToggleButton() {
- hideLockedChannels(lockToggleButton->isChecked());
-}
-
-void DeviceWidget::onDefaultToggleButton() {
-}
-
-void DeviceWidget::onOffsetChange() {
- pa_operation *o;
- int64_t offset;
- std::ostringstream card_stream;
- QByteArray card_name;
-
- if (!offsetButtonEnabled)
- return;
-
- offset = offsetButton->value() * 1000.0;
- card_stream << card_index;
- card_name = QByteArray::fromStdString(card_stream.str());
-
- if (!(o = pa_context_set_port_latency_offset(get_context(),
- card_name.constData(), activePort.constData(), offset, nullptr, nullptr))) {
- show_error(tr("pa_context_set_port_latency_offset() failed").toUtf8().constData());
- return;
- }
- pa_operation_unref(o);
-}
-
-void DeviceWidget::setDefault(bool isDefault) {
- defaultToggleButton->setChecked(isDefault);
- /*defaultToggleButton->setEnabled(!isDefault);*/
-}
-
-bool DeviceWidget::timeoutEvent() {
- executeVolumeUpdate();
- return false;
-}
-
-void DeviceWidget::executeVolumeUpdate() {
-}
-
-void DeviceWidget::setLatencyOffset(int64_t offset) {
- offsetButtonEnabled = false;
- offsetButton->setValue(offset / 1000.0);
- offsetButtonEnabled = true;
-}
-
-void DeviceWidget::setBaseVolume(pa_volume_t v) {
-
- for (int i = 0; i < channelMap.channels; i++)
- channels[i]->setBaseVolume(v);
-}
-
-void DeviceWidget::prepareMenu() {
- int idx = 0;
- int active_idx = -1;
-
- portList->clear();
- /* Fill the ComboBox's Model */
- for (auto & port : ports) {
- QByteArray name = port.first;
- QString desc = QString::fromUtf8(port.second);
- portList->addItem(desc, name);
- if (port.first == activePort)
- active_idx = idx;
- idx++;
- }
-
- if (active_idx >= 0)
- portList->setCurrentIndex(active_idx);
-
- if (!ports.empty()) {
- portSelect->show();
-
- if (pa_context_get_server_protocol_version(get_context()) >= 27) {
- offsetSelect->show();
- advancedOptions->setEnabled(true);
- } else {
- /* advancedOptions has sensitive=false by default */
- offsetSelect->hide();
- }
-
- } else {
- portSelect->hide();
- advancedOptions->setEnabled(false);
- offsetSelect->hide();
- }
-}
-
-void DeviceWidget::renamePopup() {
- if (updating)
- return;
- if (!mpMainWindow->canRenameDevices) {
- QMessageBox::warning(this, tr("Sorry, but device renaming is not supported.")
- , tr("You need to load module-device-manager in the PulseAudio server in order to rename devices"));
- return;
- }
-
- const QString old_name = QString::fromUtf8(description);
- bool ok;
- const QString new_name = QInputDialog::getText(this, QCoreApplication::organizationName(), tr("Rename device %1 to:").arg(old_name)
- , QLineEdit::Normal, old_name, &ok);
- if (ok && new_name != old_name) {
- pa_operation* o;
- gchar *key = g_markup_printf_escaped("%s:%s", mDeviceType.constData(), name.constData());
-
- if (!(o = pa_ext_device_manager_set_device_description(get_context(), key, new_name.toUtf8().constData(), nullptr, nullptr)))
- show_error(tr("pa_ext_device_manager_set_device_description() failed").toUtf8().constData());
- else
- pa_operation_unref(o);
- g_free(key);
- }
-}