VolumePopup::VolumePopup(QWidget* parent): QDialog(parent, Qt::Dialog | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint | Qt::Popup | Qt::X11BypassWindowManagerHint), m_pos(0,0), m_anchor(Qt::TopLeftCorner), m_device(0) { m_mixerButton = new QPushButton(this); m_mixerButton->setObjectName("MixerLink"); m_mixerButton->setMinimumWidth(1); m_mixerButton->setFlat(true); m_mixerButton->setToolTip(tr("Launch mixer")); m_mixerButton->setText(tr("Mixer")); QSize textSize = m_mixerButton->fontMetrics().size(Qt::TextShowMnemonic, m_mixerButton->text()); QStyleOptionButton opt; opt.initFrom(m_mixerButton); opt.rect.setSize(textSize); m_mixerButton->setMaximumSize(m_mixerButton->style()->sizeFromContents(QStyle::CT_PushButton, &opt, textSize, m_mixerButton)); m_mixerButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); m_volumeSlider = new QSlider(Qt::Vertical, this); m_volumeSlider->setTickPosition(QSlider::TicksBothSides); m_volumeSlider->setTickInterval(10); // the volume slider shows 0-100 and volumes of all devices // should be converted to percentages. m_volumeSlider->setRange(0, 100); m_muteToggleButton = new QPushButton(this); m_muteToggleButton->setIcon(XdgIcon::fromTheme(QStringList() << "audio-volume-muted")); m_muteToggleButton->setCheckable(true); m_muteToggleButton->setFlat(true); QVBoxLayout *l = new QVBoxLayout(this); l->setSpacing(0); l->setMargin(2); l->addWidget(m_mixerButton, 0, Qt::AlignHCenter); l->addWidget(m_volumeSlider, 0, Qt::AlignHCenter); l->addWidget(m_muteToggleButton, 0, Qt::AlignHCenter); connect(m_mixerButton, SIGNAL(released()), this, SIGNAL(launchMixer())); connect(m_volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(handleSliderValueChanged(int))); connect(m_muteToggleButton, SIGNAL(clicked()), this, SLOT(handleMuteToggleClicked())); }
VolumePopup::VolumePopup(QWidget* parent): QDialog(parent, Qt::Dialog | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint | Qt::Popup | Qt::X11BypassWindowManagerHint), m_pos(0,0), m_anchor(Qt::TopLeftCorner), m_device(0) { m_mixerButton = new QPushButton(this); m_mixerButton->setObjectName("MixerLink"); m_mixerButton->setMinimumWidth(1); m_mixerButton->setToolTip(tr("Launch mixer")); m_mixerButton->setText(tr("Mi&xer")); m_mixerButton->setAutoDefault(false); m_volumeSlider = new QSlider(Qt::Vertical, this); m_volumeSlider->setTickPosition(QSlider::TicksBothSides); m_volumeSlider->setTickInterval(10); // the volume slider shows 0-100 and volumes of all devices // should be converted to percentages. m_volumeSlider->setRange(0, 100); m_volumeSlider->installEventFilter(this); m_muteToggleButton = new QPushButton(this); m_muteToggleButton->setIcon(XdgIcon::fromTheme(QLatin1String("audio-volume-muted-panel"))); m_muteToggleButton->setCheckable(true); m_muteToggleButton->setAutoDefault(false); QVBoxLayout *l = new QVBoxLayout(this); l->setSpacing(0); l->setMargin(0); l->addWidget(m_mixerButton, 0, Qt::AlignHCenter); l->addWidget(m_volumeSlider, 0, Qt::AlignHCenter); l->addWidget(m_muteToggleButton, 0, Qt::AlignHCenter); connect(m_mixerButton, SIGNAL(released()), this, SIGNAL(launchMixer())); connect(m_volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(handleSliderValueChanged(int))); connect(m_muteToggleButton, SIGNAL(clicked()), this, SLOT(handleMuteToggleClicked())); }