static unsigned char eventUpdates(void) { return receiverUpdate() + clockUpdate() + screenUpdate() + buttonUpdate() + menuUpdate(); }
VolumeDialogImpl::VolumeDialogImpl( QWidget* parent, Qt::WFlags fl ) : QDialog( parent, fl ), m_tid(0), m_oldValue(0), m_d(new VolumeDialogImplPrivate) { screenUpdate(); QColor c(Qt::black); c.setAlpha(255); //XXX: Make fully opaque for now, for DirectPainter widgets in the background setAttribute(Qt::WA_SetPalette, true); QPalette p = palette(); p.setBrush(QPalette::Window, c); setPalette(p); QVBoxLayout *vBox = new QVBoxLayout(this); QHBoxLayout *hBox = new QHBoxLayout; volumeWidget = new VolumeWidget(this); QIcon icon(":icon/sound"); QIcon mute(":icon/mute"); QLabel* volumeLevel = new QLabel(this); volumeLevel->setAlignment(Qt::AlignRight | Qt::AlignCenter); volumeLevel->setMinimumWidth( fontMetrics().width("100%") ); volumeLevel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Maximum); connect(this, SIGNAL(setText(QString)), volumeLevel, SLOT(setText(QString))); volumeWidget->l = new QLabel(this); volumeWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); volumeWidget->l->setPixmap(icon.pixmap(64, 64)); volumeWidget->m = new QLabel(this); volumeWidget->m->hide(); volumeWidget->m->setPixmap(mute.pixmap(64, 64)); hBox->addStretch(); hBox->addWidget(volumeWidget->l); hBox->addWidget(volumeWidget->m); hBox->addStretch(); QHBoxLayout *wp = new QHBoxLayout; wp->addWidget(volumeWidget); wp->addWidget(volumeLevel); vBox->addLayout(hBox); vBox->addLayout(wp); connect(m_d->m_vsVolume, SIGNAL(contentsChanged()), this, SLOT(valueSpaceVolumeChanged())); initialized = 0; old_slot = 0; resetTimer(); }
void VolumeDialogImpl::valueSpaceVolumeChanged() { QValueSpaceItem vol("/System/Volume/CurrentVolume"); int volume = vol.value().toInt(); int slot = qBound(1,(int)::ceil(volume/(volumeWidget->steps()))+1,10); int slot2 = qBound(1,volume+1,100); volumeWidget->setCurrent( slot ); initialized++; resetTimer(); if(initialized < 3) // Ignore initial emit on connect to valueSpace item return; if((volume == 0) || (volume == 100)) { // Handle press and hold of volume keys at max or min! if(m_d->state) { m_d->old_volume[3] = m_d->old_volume[2]; m_d->old_volume[2] = m_d->old_volume[1]; m_d->old_volume[1] = m_d->old_volume[0]; m_d->old_volume[0] = volume; if(!((m_d->old_volume[1] == volume) && (m_d->old_volume[2] == volume) && (m_d->old_volume[3] == volume))) return; } else { m_d->state = true; return; } } else if(volume == m_d->old_volume[0]) { return; } else { m_d->old_volume[3] = m_d->old_volume[2]; m_d->old_volume[2] = m_d->old_volume[1]; m_d->old_volume[1] = m_d->old_volume[0]; m_d->old_volume[0] = volume; } screenUpdate(); if(!m_d->firstUpdate) { // Ignore the first actual update as that would be startup m_d->firstUpdate = true; return; } QString str; str.setNum(volume); old_slot = slot2; emit setText(str+"%"); if(volume > 0) { volumeWidget->m->hide(); volumeWidget->l->show(); } else { volumeWidget->l->hide(); volumeWidget->m->show(); volumeWidget->setCurrent( 1 ); } this->show(); }