void SoundSettings::InitWindow() { boost::shared_ptr<UiServices::UiModule> ui_module = framework_->GetModuleManager()->GetModule<UiServices::UiModule>(Foundation::Module::MT_UiServices).lock(); // If this occurs, we're most probably operating in headless mode. if (ui_module.get() == 0) return; QUiLoader loader; QFile file("./data/ui/soundsettings.ui"); if (!file.exists()) { OpenALAudioModule::LogError("Cannot find sound settings .ui file."); return; } settings_widget_ = loader.load(&file); if (!settings_widget_) return; ui_module->GetInworldSceneController()->AddSettingsWidget(settings_widget_, "Sound"); boost::shared_ptr<Foundation::SoundServiceInterface> soundsystem = framework_->GetServiceManager()->GetService<Foundation::SoundServiceInterface>(Foundation::Service::ST_Sound).lock(); if (!soundsystem.get()) return; QAbstractSlider* slider = settings_widget_->findChild<QAbstractSlider*>("slider_master"); if (slider) { slider->setValue(soundsystem->GetMasterGain() * 100); QObject::connect(slider, SIGNAL(valueChanged(int)), this, SLOT(MasterGainChanged(int))); } slider = settings_widget_->findChild<QAbstractSlider*>("slider_triggered"); if (slider) { slider->setValue(soundsystem->GetSoundMasterGain(Foundation::SoundServiceInterface::Triggered) * 100); QObject::connect(slider, SIGNAL(valueChanged(int)), this, SLOT(TriggeredGainChanged(int))); } slider = settings_widget_->findChild<QAbstractSlider*>("slider_ambient"); if (slider) { slider->setValue(soundsystem->GetSoundMasterGain(Foundation::SoundServiceInterface::Ambient) * 100); QObject::connect(slider, SIGNAL(valueChanged(int)), this, SLOT(AmbientGainChanged(int))); } slider = settings_widget_->findChild<QAbstractSlider*>("slider_voice"); if (slider) { slider->setValue(soundsystem->GetSoundMasterGain(Foundation::SoundServiceInterface::Voice) * 100); QObject::connect(slider, SIGNAL(valueChanged(int)), this, SLOT(VoiceGainChanged(int))); } }
virtual void setGuiValue(dyn_t val){ { QAbstractButton *button = dynamic_cast<QAbstractButton*>(_widget); if (button!=NULL){ if(val.type==BOOL_TYPE) button->setChecked(val.bool_number); else handleError("Button->setValue received %s, expected BOOL_TYPE", DYN_type_name(val.type)); return; } } { QAbstractSlider *slider = dynamic_cast<QAbstractSlider*>(_widget); if (slider!=NULL){ if(val.type==INT_TYPE) slider->setValue(val.bool_number); else handleError("Slider->setValue received %s, expected INT_TYPE", DYN_type_name(val.type)); return; } } { QLabel *label = dynamic_cast<QLabel*>(_widget); if (label!=NULL){ if(val.type==STRING_TYPE) label->setText(STRING_get_qstring(val.string)); else handleError("Text->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QLineEdit *line_edit = dynamic_cast<QLineEdit*>(_widget); if (line_edit!=NULL){ if(val.type==STRING_TYPE) line_edit->setText(STRING_get_qstring(val.string)); else handleError("Line->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QTextEdit *text_edit = dynamic_cast<QTextEdit*>(_widget); if (text_edit!=NULL){ if(val.type==STRING_TYPE) text_edit->setPlainText(STRING_get_chars(val.string)); else handleError("Text->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QSpinBox *spinbox = dynamic_cast<QSpinBox*>(_widget); if (spinbox!=NULL){ if (val.type==INT_TYPE) spinbox->setValue((int)val.int_number); else handleError("IntText->setValue received %s, expected INT_TYPE", DYN_type_name(val.type)); return; } } { QDoubleSpinBox *doublespinbox = dynamic_cast<QDoubleSpinBox*>(_widget); if (doublespinbox!=NULL){ if (val.type==FLOAT_TYPE) doublespinbox->setValue(val.float_number); else handleError("FloatText->setValue received %s, expected FLOAT_TYPE", DYN_type_name(val.type)); return; } } handleError("Gui #%d does not have a setValue method", _gui_num); }
bool QgsAttributeEditor::setValue( QWidget *editor, QgsVectorLayer *vl, int idx, const QVariant &value ) { if ( !editor ) return false; QgsVectorLayer::EditType editType = vl->editType( idx ); const QgsField &field = vl->pendingFields()[idx]; QVariant::Type myFieldType = field.type(); QSettings settings; QString nullValue = settings.value( "qgis/nullValue", "NULL" ).toString(); switch ( editType ) { case QgsVectorLayer::Classification: case QgsVectorLayer::UniqueValues: case QgsVectorLayer::Enumeration: case QgsVectorLayer::ValueMap: case QgsVectorLayer::ValueRelation: { QVariant v = value; QComboBox *cb = qobject_cast<QComboBox *>( editor ); if ( !cb ) return false; if ( v.isNull() ) { v = nullValue; } int idx = cb->findData( v ); if ( idx < 0 ) return false; cb->setCurrentIndex( idx ); } break; case QgsVectorLayer::DialRange: case QgsVectorLayer::SliderRange: case QgsVectorLayer::EditRange: { if ( myFieldType == QVariant::Int ) { if ( editType == QgsVectorLayer::EditRange ) { QSpinBox *sb = qobject_cast<QSpinBox *>( editor ); if ( !sb ) return false; sb->setValue( value.toInt() ); } else { QAbstractSlider *sl = qobject_cast<QAbstractSlider *>( editor ); if ( !sl ) return false; sl->setValue( value.toInt() ); } break; } else if ( myFieldType == QVariant::Double ) { QDoubleSpinBox *dsb = qobject_cast<QDoubleSpinBox *>( editor ); if ( !dsb ) return false; dsb->setValue( value.toDouble() ); } } case QgsVectorLayer::CheckBox: { QCheckBox *cb = qobject_cast<QCheckBox *>( editor ); if ( cb ) { QPair<QString, QString> states = vl->checkedState( idx ); cb->setChecked( value == states.first ); break; } } // fall-through case QgsVectorLayer::LineEdit: case QgsVectorLayer::UniqueValuesEditable: case QgsVectorLayer::Immutable: case QgsVectorLayer::UuidGenerator: default: { QLineEdit *le = qobject_cast<QLineEdit *>( editor ); QTextEdit *te = qobject_cast<QTextEdit *>( editor ); QPlainTextEdit *pte = qobject_cast<QPlainTextEdit *>( editor ); if ( !le && !te && !pte ) return false; QString text; if ( value.isNull() ) { if ( myFieldType == QVariant::Int || myFieldType == QVariant::Double || myFieldType == QVariant::LongLong ) text = ""; else if ( editType == QgsVectorLayer::UuidGenerator ) text = QUuid::createUuid().toString(); else text = nullValue; } else { text = value.toString(); } if ( le ) le->setText( text ); if ( te ) te->setHtml( text ); if ( pte ) pte->setPlainText( text ); } break; case QgsVectorLayer::FileName: case QgsVectorLayer::Calendar: { QLineEdit* le = qobject_cast<QLineEdit*>( editor ); if ( !le ) { le = editor->findChild<QLineEdit *>(); } if ( !le ) { return false; } le->setText( value.toString() ); } break; } return true; }