예제 #1
0
파일: Contacts.cpp 프로젝트: 91yuan/ilixi
Contacts::Contacts(ContactManager* manager, Widget* parent)
        : Frame(parent),
          _manager(manager),
          _dialogAddMode(1)
{
    VBoxLayout* box = new VBoxLayout();
    box->setHorizontalAlignment(Alignment::Center);
    setLayout(box);

    ButtonGroup* group1 = new ButtonGroup();
    addWidget(group1);

    _add = new DirectionalButton("Add");
    _add->setIcon(StyleHint::Plus);
    _add->sigClicked.connect(sigc::mem_fun(this, &Contacts::showAddContactDialog));
    group1->addButton(_add);

    _remove = new DirectionalButton("Remove");
    _remove->setDisabled();
    _remove->setIcon(StyleHint::Minus);
    _remove->sigClicked.connect(sigc::mem_fun(this, &Contacts::removeContact));
    group1->addButton(_remove);

    _edit = new DirectionalButton("Edit");
    _edit->setDisabled();
    _edit->setIcon(StyleHint::Edit);
    _edit->sigClicked.connect(sigc::mem_fun(this, &Contacts::showEditContactDialog));
    group1->addButton(_edit);

    _contactsList = new ListBox();
    _contactsList->setDrawFrame(true);
    _contactsList->sigIndexChanged.connect(sigc::mem_fun(this, &Contacts::updateButtons));
    addWidget(_contactsList);

    ButtonGroup* group2 = new ButtonGroup();
    addWidget(group2);

    _txt = new DirectionalButton("Text");
    _txt->setIcon(StyleHint::Comment);
    _txt->setDisabled();
//    _txt->sigClicked.connect(sigc::mem_fun(this, &Contacts::addContact));
    group2->addButton(_txt);

    _call = new DirectionalButton("Call");
    _call->setDisabled();
    _call->setIcon(StyleHint::Phone);
    _call->sigClicked.connect(sigc::bind<bool>(sigc::mem_fun(this, &Contacts::callContact), false));
    group2->addButton(_call);

    _video = new DirectionalButton("Video Call");
    _video->setDisabled();
    _video->setIcon(StyleHint::Camera);
    _video->sigClicked.connect(sigc::bind<bool>(sigc::mem_fun(this, &Contacts::callContact), true));
    group2->addButton(_video);

    _contactDialog = new Dialog("Add Contact", Dialog::OKCancelButtonOption);
    _contactDialog->setLayout(new VBoxLayout());
    _contactDialog->addWidget(new Label("Name:"));
    _nameInput = new LineInput("");
    _contactDialog->addWidget(_nameInput);
    Size s = _nameInput->preferredSize();
    _nameInput->setMinimumSize(PlatformManager::instance().getLayerSize().width() - 200, s.height());
    _contactDialog->addWidget(new Label("Address:"));
    _addrInput = new LineInput("");
    _contactDialog->addWidget(_addrInput);
    _contactDialog->sigAccepted.connect(sigc::mem_fun(this, &Contacts::handleDialogAccept));

    populate();
}
예제 #2
0
파일: SoundMixer.cpp 프로젝트: Ecro/ilixi
ILXSoundMixer::ILXSoundMixer(int argc, char* argv[])
        : Application(&argc, &argv, AppOptions(OptDaleAuto | OptSound)),
          _soundComponent(NULL),
          _music(NULL),
          _bandSliderFont(NULL)
{
    setMargin(20);
    setLayout(new VBoxLayout());

    _bandSliderFont = new Font("Sans", 8);

    HBoxLayout* volStuff = new HBoxLayout();
    addWidget(volStuff);
    TabPanel* panel = new TabPanel();
    volStuff->addWidget(panel);

    //**********
    HBoxLayout* volHBox = new HBoxLayout();
    panel->addTab(volHBox, "Volume Control");

    GridLayout* volGrid = new GridLayout(8, 3);
    volHBox->addWidget(volGrid);
    volGrid->addWidget(new Label("Master Volume:"), 0, 0, 0, 3);

    _masterVolume = new Slider();
    _masterVolume->setRange(0, 1);
    _masterVolume->setValue(SoundDFB::getMasterVolume());
    _masterVolume->setStep(0.1);
    _masterVolume->setPageStep(0.2);
    _masterVolume->setUpdateMode(Slider::UponRelease);
    _masterVolume->sigValueChanged.connect(sigc::mem_fun(this, &ILXSoundMixer::changeMasterVolume));
    volGrid->addWidget(_masterVolume, 1, 0, 0, 2);

    _mute = new PushButton("Mute");
    _mute->setXConstraint(FixedConstraint);
    volGrid->addWidget(_mute, 1, 2);
    _mute->sigClicked.connect(sigc::mem_fun(this, &ILXSoundMixer::mute));

    volGrid->addWidget(new Label("Sound Effects:"), 2, 0, 0, 3);
    _effectsVolume = new Slider();
    _effectsVolume->setRange(0, 1);
    _effectsVolume->setValue(1);
    _effectsVolume->setStep(0.1);
    _effectsVolume->setPageStep(0.2);
    _effectsVolume->setUpdateMode(Slider::UponRelease);
    _effectsVolume->sigValueChanged.connect(sigc::mem_fun(this, &ILXSoundMixer::changeEffectsVolume));
    volGrid->addWidget(_effectsVolume, 3, 0, 0, 2);

    volGrid->addWidget(new Label("Balance:"), 4, 0, 0, 3);

    volGrid->addWidget(new Label("Front"), 5, 0);
    Slider* frSlider = new Slider();
    frSlider->setValue(50);
    volGrid->addWidget(frSlider, 5, 1);
    volGrid->addWidget(new Label("Rear"), 5, 2);

    volGrid->addWidget(new Label("Left"), 6, 0);
    Slider* lrSlider = new Slider();
    lrSlider->setValue(50);
    volGrid->addWidget(lrSlider, 6, 1);
    volGrid->addWidget(new Label("Right"), 6, 2);

    volGrid->addWidget(new Spacer(Vertical), 7, 0);

    GroupBox* volMeter = new GroupBox("Meter");
    VBoxLayout* volMeterLayout = new VBoxLayout();
    volMeterLayout->setHorizontalAlignment(Alignment::Center);
    volMeter->setLayout(volMeterLayout);
    volMeter->setXConstraint(FixedConstraint);
    volStuff->addWidget(volMeter);
    VolumeMeter* meter = new VolumeMeter();
    volMeter->addWidget(meter);
    volHBox->addWidget(volMeter);

    //*********
    VBoxLayout* eqBox = new VBoxLayout();
    panel->addTab(eqBox, "Equalizer");

    HBoxLayout* buttons = new HBoxLayout();
    buttons->addWidget(new CheckBox("EQ Enabled"));
    buttons->addWidget(new Spacer(Horizontal));
    buttons->addWidget(new PushButton("Load Preset"));
    buttons->addWidget(new PushButton("Save Preset"));
    PushButton* testSound = new PushButton("Test");
    testSound->sigClicked.connect(sigc::mem_fun(this, &ILXSoundMixer::playTestSound));
    buttons->addWidget(testSound);
    eqBox->addWidget(buttons);

    HBoxLayout* rowLevels = new HBoxLayout();
    rowLevels->setYConstraint(ExpandingConstraint);
    rowLevels->addWidget(new BandSlider("50Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("100Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("156Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("220Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("311Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("440Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("622Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("880Hz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("1.25KHz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("1.75KHz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("2.5KHz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("3.5KHz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("5KHz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("10KHz", _bandSliderFont));
    rowLevels->addWidget(new BandSlider("20KHz", _bandSliderFont));
    eqBox->addWidget(rowLevels);

#if ILIXI_HAVE_COMPOSITOR
    DaleDFB::comaGetComponent("SoundMixer", &_soundComponent);
    if (_soundComponent)
        _soundComponent->Listen(_soundComponent, SoundMixer::VolumeChanged, volumeListener, this);
#endif
    _music = new Music(ILIXI_DATADIR"soundmixer/test.wav");
    _music->setRepeat(true);

}