diff -r 27aa8030322b -r e32fa14529f8 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Tue Dec 06 19:46:40 2005 +0000 +++ b/QTfrontend/hwform.cpp Wed Dec 07 20:36:55 2005 +0000 @@ -66,15 +66,24 @@ binds << sdlkeys[i][1]; } - for(int i = 0; i < BINDS_NUMBER; i++) + quint16 widind = 0, top = 0; + for(quint8 i = 0; i < BINDS_NUMBER; i++) { - LBind[i] = new QLabel(ui.GBoxBinds); - LBind[i]->setGeometry(QRect(10, 23 + i * 30, 60, 20)); + LBind[i] = new QLabel(ui.BindsBox->widget(widind)); + LBind[i]->setGeometry(QRect(10, top + 3, 60, 20)); LBind[i]->setText(cbinds[i].name); LBind[i]->setAlignment(Qt::AlignRight); - CBBind[i] = new QComboBox(ui.GBoxBinds); - CBBind[i]->setGeometry(QRect(80, 20 + i * 30, 80, 20)); + CBBind[i] = new QComboBox(ui.BindsBox->widget(widind)); + CBBind[i]->setGeometry(QRect(80, top, 80, 20)); CBBind[i]->addItems(binds); + if (cbinds[i].chwidget) + { + top = 0; + widind++; + } else + { + top += 30; + } } QDir tmpdir; @@ -136,18 +145,22 @@ } settings.close(); } + connect(ui.BtnSPBack, SIGNAL(clicked()), this, SLOT(GoToMain())); + connect(ui.BtnDemosBack, SIGNAL(clicked()), this, SLOT(GoToMain())); connect(ui.BtnSetupBack, SIGNAL(clicked()), this, SLOT(GoToMain())); connect(ui.BtnMPBack, SIGNAL(clicked()), this, SLOT(GoToMain())); connect(ui.BtnSinglePlayer, SIGNAL(clicked()), this, SLOT(GoToSinglePlayer())); connect(ui.BtnSetup, SIGNAL(clicked()), this, SLOT(GoToSetup())); connect(ui.BtnMultiplayer, SIGNAL(clicked()), this, SLOT(GoToMultiplayer())); + connect(ui.BtnDemos, SIGNAL(clicked()), this, SLOT(GoToDemos())); connect(ui.BtnNewTeam, SIGNAL(clicked()), this, SLOT(NewTeam())); connect(ui.BtnEditTeam, SIGNAL(clicked()), this, SLOT(EditTeam())); connect(ui.BtnTeamSave, SIGNAL(clicked()), this, SLOT(TeamSave())); connect(ui.BtnTeamDiscard, SIGNAL(clicked()), this, SLOT(TeamDiscard())); connect(ui.BtnSimpleGame, SIGNAL(clicked()), this, SLOT(SimpleGame())); connect(ui.BtnSaveOptions, SIGNAL(clicked()), this, SLOT(SaveOptions())); + connect(ui.BtnPlayDemo, SIGNAL(clicked()), this, SLOT(PlayDemo())); connect(ui.CBGrave, SIGNAL(activated(const QString &)), this, SLOT(CBGrave_activated(const QString &))); connect(ui.CBFort, SIGNAL(activated(const QString &)), this, SLOT(CBFort_activated(const QString &))); ui.Pages->setCurrentIndex(ID_PAGE_MAIN); @@ -172,6 +185,17 @@ { ui.Pages->setCurrentIndex(ID_PAGE_MULTIPLAYER); } + +void HWForm::GoToDemos() +{ + QDir tmpdir; + tmpdir.cd(DATA_PATH); + tmpdir.cd("Demos"); + tmpdir.setFilter(QDir::Files); + ui.DemosList->addItems(tmpdir.entryList(QStringList("*.hwd_1")).replaceInStrings(QRegExp("^(.*).hwd_1"), "\\1")); + ui.Pages->setCurrentIndex(ID_PAGE_DEMOS); +} + void HWForm::NewTeam() { tmpTeam = new HWTeam("unnamed"); @@ -204,10 +228,10 @@ void HWForm::SimpleGame() { - game = new HWGame(); + game = new HWGame(ui.CBResolution->currentIndex(), ui.CBFullscreen->isChecked()); game->AddTeam(cfgdir.absolutePath() + "/team.cfg"); game->AddTeam(cfgdir.absolutePath() + "/team.cfg"); - game->Start(ui.CBResolution->currentIndex(), ui.CBFullscreen->isChecked()); + game->Start(); } void HWForm::CBGrave_activated(const QString & gravename) @@ -240,3 +264,20 @@ stream << "fullscreen " << ui.CBFullscreen->isChecked() << endl; settings.close(); } + +void HWForm::PlayDemo() +{ + QListWidgetItem * curritem = ui.DemosList->currentItem(); + if (!curritem) + { + QMessageBox::critical(this, + tr("Error"), + tr("Please, select demo from the list above"), + tr("OK")); + return ; + } + game = new HWGame(ui.CBResolution->currentIndex(), ui.CBFullscreen->isChecked()); + game->PlayDemo(QString(DATA_PATH) + "/Demos/" + curritem->text() + ".hwd_1"); +} + +