void KMix::placeWidgets() { int sliderHeight=100; int qsMaxY=0; int ix = 0; int iy = 0; QSlider *qs; QLabel *qb; // Place Sliders (Volume indicators) ix = 0; if (mainmenuOn) mainmenu->show(); else mainmenu->hide(); bool first = true; MixDevice *MixPtr = mix->First; while (MixPtr) { if (MixPtr->is_disabled) { MixPtr->picLabel->hide(); MixPtr->Left->slider->hide(); if (MixPtr->is_stereo) MixPtr->Right->slider->hide(); MixPtr=MixPtr->Next; continue; } if ( !first ) ix += 6; else ix += 4; // On first loop add 4 int old_x=ix; qb = MixPtr->picLabel; // left slider qs = MixPtr->Left->slider; if (tickmarksOn) { qs->setTickmarks(QSlider::Left); qs->setTickInterval(10); } else qs->setTickmarks(QSlider::NoMarks); QSize VolSBsize = qs->sizeHint(); qs->setValue(100-MixPtr->Left->volume); qs->setGeometry( ix, iy+qb->height(), VolSBsize.width(), sliderHeight); qs->move(ix,iy+qb->height()); qs->show(); // Its a good point to find out the maximum y pos of the slider right here if (first) qsMaxY = qs->y()+qs->height(); ix += qs->width(); // But make sure it isn't linked to the left channel. bool BothSliders = (MixPtr->is_stereo == true ) && (MixPtr->StereoLink == false); QString ToolTipString; ToolTipString = MixPtr->name(); if ( BothSliders) ToolTipString += " (Left)"; QToolTip::add( qs, ToolTipString ); // Mark record source(s) and muted channel(s). This is done by ordinary // color marks on the slider, but this will be changed by red and green // and black "bullets" below the slider. TODO !!! if (MixPtr->is_recsrc) qs->setBackgroundColor( red ); else { if (MixPtr->is_muted) qs->setBackgroundColor( black ); else qs->setBackgroundColor( colorGroup().mid() ); } if (MixPtr->is_stereo == true) { qs = MixPtr->Right->slider; if (MixPtr->StereoLink == false) { // Show right slider if (tickmarksOn) { qs->setTickmarks(QSlider::Right); qs->setTickInterval(10); } else qs->setTickmarks(QSlider::NoMarks); QSize VolSBsize = qs->sizeHint(); qs->setValue(100-MixPtr->Right->volume); qs->setGeometry( ix, iy+qb->height(), VolSBsize.width(), sliderHeight); ix += qs->width(); ToolTipString = MixPtr->name(); ToolTipString += " (Right)"; QToolTip::add( qs, ToolTipString ); if (MixPtr->is_recsrc) qs->setBackgroundColor( red ); else { if (MixPtr->is_muted) qs->setBackgroundColor( black ); else qs->setBackgroundColor( colorGroup().mid() ); } qs->show(); } else // Don't show right slider qs->hide(); } // Pixmap label. Place it horizontally centered to volume slider(s) qb->move((int)((ix + old_x - qb->width() )/2),iy); qb->show(); first=false; MixPtr=MixPtr->Next; } ix += 4; iy = qsMaxY; LeftRightSB->setGeometry(0,iy,ix,LeftRightSB->sizeHint().height()); iy+=LeftRightSB->height(); Container->setFixedSize( ix, iy ); updateRects(); }