# HG changeset patch # User sheepluva # Date 1317076719 -7200 # Node ID 8b5345758f6282a9a8924a08d66316ad21247997 # Parent a740069c21e330ff9ee0a61b8b5404057156dcae some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/AbstractPage.cpp --- a/QTfrontend/AbstractPage.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/AbstractPage.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -25,9 +25,36 @@ font14 = new QFont("MS Shell Dlg", 14); } +void AbstractPage::initPage() +{ + QGridLayout * pageLayout = new QGridLayout(this); + + // stretch grid space for body and footer + pageLayout->setColumnStretch(0,0); + pageLayout->setColumnStretch(1,1); + pageLayout->setRowStretch(0,1); + pageLayout->setRowStretch(1,0); + + // add back/exit button + btnBack = formattedButton(":/res/Exit.png", true); + pageLayout->addWidget(btnBack, 1, 0, 1, 1, Qt::AlignLeft | Qt::AlignBottom); + + // add body layout as defined by the subclass + pageLayout->addLayout(bodyLayoutDefinition(), 0, 0, 1, 2); + + // add footer layout + QLayout * fld = footerLayoutDefinition(); + if (fld != NULL) + pageLayout->addLayout(fld, 1, 1); + + // connect signals + connect(btnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); + connectSignals(); +} + QPushButton * AbstractPage::formattedButton(const QString & btname, bool hasIcon) { - QPushButton* btn = new QPushButton(this); + QPushButton * btn = new QPushButton(this); if (hasIcon) { @@ -49,22 +76,26 @@ QPushButton * AbstractPage::addButton(const QString & btname, QGridLayout* grid, int wy, int wx, bool hasIcon) { - QPushButton* btn = formattedButton(btname, hasIcon); + QPushButton * btn = formattedButton(btname, hasIcon); grid->addWidget(btn, wy, wx); return btn; } QPushButton * AbstractPage::addButton(const QString & btname, QGridLayout* grid, int wy, int wx, int rowSpan, int columnSpan, bool hasIcon) { - QPushButton* btn = formattedButton(btname, hasIcon); + QPushButton * btn = formattedButton(btname, hasIcon); grid->addWidget(btn, wy, wx, rowSpan, columnSpan); return btn; } QPushButton * AbstractPage::addButton(const QString & btname, QBoxLayout* box, int where, bool hasIcon) { - QPushButton* btn = formattedButton(btname, hasIcon); + QPushButton * btn = formattedButton(btname, hasIcon); box->addWidget(btn, where); return btn; } +void AbstractPage::setBackButtonVisible(bool visible) +{ + btnBack->setVisible(visible); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/AbstractPage.h --- a/QTfrontend/AbstractPage.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/AbstractPage.h Tue Sep 27 00:38:39 2011 +0200 @@ -56,17 +56,43 @@ protected: // constructor and virtual destructor - AbstractPage(QWidget* parent = 0); + AbstractPage(QWidget * parent = 0); + + // call this in the constructor of your subclass + void initPage(); + + // the following methods are used during page construction + + // you MUST implement this method in your subclass + // only define layout, not behavior in here + virtual QLayout * bodyLayoutDefinition() = 0; + + // you CAN implement this method in your subclass + virtual QLayout * footerLayoutDefinition() { return NULL; }; + + // you CAN but most likely want to implement this method in your subclass + // keep in mind not to expose twidgets as public! + // instead define a signal with a meaningful name and connect the widget + // signals to your page signals + virtual void connectSignals() {}; +/* +virtual QLayout * bodyLayoutDefinition()\n{\n return new QGridLayout(); //TODO\n}\n\nvirtual QLayout * footerLayoutDefinition()\n{\n // return NULL;\n}\n\nvirtual void connectSignals()\n{\n //TODO\n}\n\n +*/ + virtual ~AbstractPage() {}; - QPushButton * addButton(const QString & btname, QGridLayout* grid, int wy, int wx, bool hasIcon = false); - QPushButton * addButton(const QString & btname, QGridLayout* grid, int wy, int wx, int rowSpan, int columnSpan, bool hasIcon = false); - QPushButton * addButton(const QString & btname, QBoxLayout* box, int where, bool hasIcon = false); + QPushButton * addButton(const QString & btname, QGridLayout * grid, int wy, int wx, bool hasIcon = false); + QPushButton * addButton(const QString & btname, QGridLayout * grid, int wy, int wx, int rowSpan, int columnSpan, bool hasIcon = false); + QPushButton * addButton(const QString & btname, QBoxLayout * box, int where, bool hasIcon = false); + + void setBackButtonVisible(bool visible = true); QFont * font14; private: QPushButton * formattedButton(const QString & btname, bool hasIcon); + + QPushButton * btnBack; }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/hedgewars.qrc --- a/QTfrontend/hedgewars.qrc Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/hedgewars.qrc Tue Sep 27 00:38:39 2011 +0200 @@ -45,6 +45,7 @@ res/unchecked.png res/graphicsicon.png res/miscicon.png + res/Load.png res/Save.png res/Record.png res/weaponsicon.png diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/hwform.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -165,8 +165,8 @@ connect(ui.pageMain->BtnDataDownload, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); pageSwitchMapper->setMapping(ui.pageMain->BtnDataDownload, ID_PAGE_DATADOWNLOAD); - connect(ui.pageMain->BtnExit, SIGNAL(pressed()), this, SLOT(btnExitPressed())); - connect(ui.pageMain->BtnExit, SIGNAL(clicked()), this, SLOT(btnExitClicked())); + //connect(ui.pageMain->BtnExit, SIGNAL(pressed()), this, SLOT(btnExitPressed())); + //connect(ui.pageMain->BtnExit, SIGNAL(clicked()), this, SLOT(btnExitClicked())); connect(ui.pageEditTeam, SIGNAL(teamEdited()), this, SLOT(AfterTeamEdit())); @@ -186,8 +186,8 @@ connect(ui.pageOptions, SIGNAL(newTeamRequested()), this, SLOT(NewTeam())); connect(ui.pageOptions, SIGNAL(editTeamRequested(const QString&)), this, SLOT(EditTeam(const QString&))); connect(ui.pageOptions, SIGNAL(deleteTeamRequested(const QString&)), this, SLOT(DeleteTeam(const QString&))); - connect(ui.pageOptions->BtnSaveOptions, SIGNAL(clicked()), config, SLOT(SaveOptions())); - connect(ui.pageOptions->BtnSaveOptions, SIGNAL(clicked()), this, SLOT(GoBack())); + connect(ui.pageOptions->btnSave, SIGNAL(clicked()), config, SLOT(SaveOptions())); + connect(ui.pageOptions->btnSave, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageOptions->BtnAssociateFiles, SIGNAL(clicked()), this, SLOT(AssociateFiles())); connect(ui.pageOptions->WeaponEdit, SIGNAL(clicked()), this, SLOT(GoToSelectWeapon())); @@ -533,8 +533,11 @@ void HWForm::GoBack() { + int curid = ui.Pages->currentIndex(); + if (curid == ID_PAGE_MAIN) + exit(); + int id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop(); - int curid = ui.Pages->currentIndex(); ui.Pages->setCurrentIndex(id); OnPageShown(id, curid); @@ -569,14 +572,15 @@ eggTimer.start(); } -void HWForm::btnExitClicked() +void HWForm::exit() { - if (eggTimer.elapsed() < 3000){ +// if (eggTimer.elapsed() < 3000){ #ifdef __APPLE__ panel->showInstallController(); #endif close(); - } +// TODO reactivate egg +/* } else { QPushButton * btn = findChild("imageButt"); @@ -584,7 +588,7 @@ { btn->setIcon(QIcon(":/res/bonus.png")); } - } + } */ } void HWForm::IntermediateSetup() diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/hwform.h --- a/QTfrontend/hwform.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/hwform.h Tue Sep 27 00:38:39 2011 +0200 @@ -59,6 +59,7 @@ QSettings * gameSettings; // Same file GameUIConfig points to but without the baggage. Needs sync() calls if you want to get GameUIConfig changes though void updateXfire(); void PlayDemoQuick(const QString & demofilename); + void exit(); private slots: void GoToSaves(); @@ -76,7 +77,6 @@ QString getDemoArguments(); void AssociateFiles(); void btnExitPressed(); - void btnExitClicked(); void IntermediateSetup(); void NewTeam(); void EditTeam(const QString & teamName); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageadmin.cpp --- a/QTfrontend/pageadmin.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageadmin.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -26,14 +26,12 @@ #include "pageadmin.h" #include "chatwidget.h" -PageAdmin::PageAdmin(QWidget* parent) : - AbstractPage(parent) +QLayout * PageAdmin::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); // 0 pbAsk = addButton(tr("Fetch data"), pageLayout, 0, 0, 1, 3); - connect(pbAsk, SIGNAL(clicked()), this, SIGNAL(askServerVars())); // 1 QLabel * lblSMN = new QLabel(this); @@ -68,21 +66,28 @@ tb->setOpenExternalLinks(true); tb->document()->setDefaultStyleSheet(HWChatWidget::STYLE); pageLayout->addWidget(tb, 4, 1, 1, 2); - connect(leServerMessageNew, SIGNAL(textEdited(const QString &)), tb, SLOT(setHtml(const QString &))); - connect(leServerMessageOld, SIGNAL(textEdited(const QString &)), tb, SLOT(setHtml(const QString &))); // 5 pbClearAccountsCache = addButton(tr("Clear Accounts Cache"), pageLayout, 5, 0); - connect(pbClearAccountsCache, SIGNAL(clicked()), this, SIGNAL(clearAccountsCache())); // 6 pbSetSM = addButton(tr("Set data"), pageLayout, 6, 0, 1, 3); - connect(pbSetSM, SIGNAL(clicked()), this, SLOT(smChanged())); + return pageLayout; +} - // 7 - BtnBack = addButton(":/res/Exit.png", pageLayout, 7, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +void PageAdmin::connectSignals() +{ + connect(pbAsk, SIGNAL(clicked()), this, SIGNAL(askServerVars())); + connect(leServerMessageNew, SIGNAL(textEdited(const QString &)), tb, SLOT(setHtml(const QString &))); + connect(leServerMessageOld, SIGNAL(textEdited(const QString &)), tb, SLOT(setHtml(const QString &))); + connect(pbClearAccountsCache, SIGNAL(clicked()), this, SIGNAL(clearAccountsCache())); + connect(pbSetSM, SIGNAL(clicked()), this, SLOT(smChanged())); +} + +PageAdmin::PageAdmin(QWidget* parent) : AbstractPage(parent) +{ + initPage(); } void PageAdmin::smChanged() diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageadmin.h --- a/QTfrontend/pageadmin.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageadmin.h Tue Sep 27 00:38:39 2011 +0200 @@ -28,19 +28,6 @@ public: PageAdmin(QWidget* parent = 0); -private: - QLineEdit * leServerMessageNew; - QLineEdit * leServerMessageOld; - QPushButton * pbSetSM; - QPushButton * pbAsk; - QSpinBox * sbProtocol; - QTextBrowser * tb; - QPushButton * BtnBack; - QPushButton * pbClearAccountsCache; - -private slots: - void smChanged(); - public slots: void serverMessageNew(const QString & str); void serverMessageOld(const QString & str); @@ -52,6 +39,22 @@ void setProtocol(int proto); void askServerVars(); void clearAccountsCache(); + +protected: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + +private: + QLineEdit * leServerMessageNew; + QLineEdit * leServerMessageOld; + QPushButton * pbSetSM; + QPushButton * pbAsk; + QSpinBox * sbProtocol; + QTextBrowser * tb; + QPushButton * pbClearAccountsCache; + +private slots: + void smChanged(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagecampaign.cpp --- a/QTfrontend/pagecampaign.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagecampaign.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -22,9 +22,9 @@ #include "pagecampaign.h" -PageCampaign::PageCampaign(QWidget* parent) : AbstractPage(parent) +QLayout * PageCampaign::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 2); pageLayout->setColumnStretch(2, 1); @@ -42,7 +42,12 @@ BtnStartCampaign->setText(QPushButton::tr("Go!")); pageLayout->addWidget(BtnStartCampaign, 2, 2); + return pageLayout; +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +PageCampaign::PageCampaign(QWidget* parent) : AbstractPage(parent) +{ + initPage(); } + + diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagecampaign.h --- a/QTfrontend/pagecampaign.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagecampaign.h Tue Sep 27 00:38:39 2011 +0200 @@ -32,8 +32,8 @@ QComboBox *CBSelect; QComboBox *CBTeam; -private: - QPushButton *BtnBack; +protected: + QLayout * bodyLayoutDefinition(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageconnecting.cpp --- a/QTfrontend/pageconnecting.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageconnecting.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -16,22 +16,28 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include +#include #include #include "pageconnecting.h" -PageConnecting::PageConnecting(QWidget* parent) : - AbstractPage(parent) +QLayout * PageConnecting::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QVBoxLayout * pageLayout = new QVBoxLayout(); QLabel * lblConnecting = new QLabel(this); lblConnecting->setText(tr("Connecting...")); pageLayout->addWidget(lblConnecting); - QPushButton * pbCancel = new QPushButton(this); - pbCancel->setText(tr("Cancel")); - pageLayout->addWidget(pbCancel); - connect(pbCancel, SIGNAL(clicked()), this, SIGNAL(cancelConnection())); + return pageLayout; } + +void PageConnecting::connectSignals() +{ + connect(this, SIGNAL(goBack()), this, SIGNAL(cancelConnection())); +} + +PageConnecting::PageConnecting(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageconnecting.h --- a/QTfrontend/pageconnecting.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageconnecting.h Tue Sep 27 00:38:39 2011 +0200 @@ -30,6 +30,10 @@ signals: void cancelConnection(); + +protected: + QLayout * bodyLayoutDefinition(); + void connectSignals(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagedata.cpp --- a/QTfrontend/pagedata.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagedata.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -34,27 +34,32 @@ #include "quazip.h" #include "quazipfile.h" -PageDataDownload::PageDataDownload(QWidget* parent) : AbstractPage(parent) +QLayout * PageDataDownload::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 1); pageLayout->setColumnStretch(2, 1); - web = new DataBrowser(this); - connect(web, SIGNAL(anchorClicked(QUrl)), this, SLOT(request(const QUrl&))); - web->setOpenLinks(false); pageLayout->addWidget(web, 0, 0, 1, 3); progressBarsLayout = new QVBoxLayout(); pageLayout->addLayout(progressBarsLayout, 1, 0, 1, 3); - - fetchList(); + return pageLayout; +} +void PageDataDownload::connectSignals() +{ + connect(web, SIGNAL(anchorClicked(QUrl)), this, SLOT(request(const QUrl&))); +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +PageDataDownload::PageDataDownload(QWidget* parent) : AbstractPage(parent) +{ + initPage(); + + web->setOpenLinks(false); + fetchList(); } void PageDataDownload::request(const QUrl &url) diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagedata.h --- a/QTfrontend/pagedata.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagedata.h Tue Sep 27 00:38:39 2011 +0200 @@ -37,8 +37,11 @@ public slots: void fetchList(); +protected: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + private: - QPushButton *BtnBack; DataBrowser *web; QHash progressBars; QVBoxLayout *progressBarsLayout; diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagedrawmap.cpp --- a/QTfrontend/pagedrawmap.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagedrawmap.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -23,29 +23,35 @@ #include "pagedrawmap.h" #include "drawmapwidget.h" -PageDrawMap::PageDrawMap(QWidget* parent) : AbstractPage(parent) + +QLayout * PageDrawMap::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); - QPushButton * pbUndo = addButton(tr("Undo"), pageLayout, 0, 0); - QPushButton * pbClear = addButton(tr("Clear"), pageLayout, 1, 0); - QPushButton * pbLoad = addButton(tr("Load"), pageLayout, 2, 0); - QPushButton * pbSave = addButton(tr("Save"), pageLayout, 3, 0); - - - BtnBack = addButton(":/res/Exit.png", pageLayout, 5, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - + pbUndo = addButton(tr("Undo"), pageLayout, 0, 0); + pbClear = addButton(tr("Clear"), pageLayout, 1, 0); + pbLoad = addButton(tr("Load"), pageLayout, 2, 0); + pbSave = addButton(tr("Save"), pageLayout, 3, 0); drawMapWidget = new DrawMapWidget(this); pageLayout->addWidget(drawMapWidget, 0, 1, 5, 1); + return pageLayout; +} + +void PageDrawMap::connectSignals() +{ connect(pbUndo, SIGNAL(clicked()), drawMapWidget, SLOT(undo())); connect(pbClear, SIGNAL(clicked()), drawMapWidget, SLOT(clear())); connect(pbLoad, SIGNAL(clicked()), this, SLOT(load())); connect(pbSave, SIGNAL(clicked()), this, SLOT(save())); } +PageDrawMap::PageDrawMap(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} + void PageDrawMap::load() { QString fileName = QFileDialog::getOpenFileName(NULL, tr("Load drawn map"), ".", tr("Drawn Maps") + " (*.hwmap);;" + tr("All files") + " (*)"); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagedrawmap.h --- a/QTfrontend/pagedrawmap.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagedrawmap.h Tue Sep 27 00:38:39 2011 +0200 @@ -32,8 +32,15 @@ DrawMapWidget * drawMapWidget; +protected: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + private: - QPushButton * BtnBack; + QPushButton * pbUndo; + QPushButton * pbClear; + QPushButton * pbLoad; + QPushButton * pbSave; private slots: void load(); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageeditteam.cpp --- a/QTfrontend/pageeditteam.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageeditteam.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -32,28 +33,16 @@ #include "hats.h" #include "HWApplication.h" -PageEditTeam::PageEditTeam(QWidget* parent, SDLInteraction * sdli) : - AbstractPage(parent) +QLayout * PageEditTeam::bodyLayoutDefinition() { - m_playerHash = "0000000000000000000000000000000000000000"; - mySdli = sdli; - QGridLayout * pageLayout = new QGridLayout(this); - QTabWidget * tbw = new QTabWidget(this); + QGridLayout * pageLayout = new QGridLayout(); + QTabWidget * tbw = new QTabWidget(); QWidget * page1 = new QWidget(this); QWidget * page2 = new QWidget(this); tbw->addTab(page1, tr("General")); tbw->addTab(page2, tr("Advanced")); pageLayout->addWidget(tbw, 0, 0, 1, 3); - BtnTeamSave = addButton(":/res/Save.png", pageLayout, 1, 2, true);; - BtnTeamSave->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}"); - connect(BtnTeamSave, SIGNAL(clicked()), this, SLOT(saveTeam())); - - BtnTeamDiscard = addButton(":/res/Exit.png", pageLayout, 1, 0, true); - BtnTeamDiscard->setFixedHeight(BtnTeamSave->height()); - BtnTeamDiscard->setStyleSheet("QPushButton{margin-top: 31px;}"); - connect(BtnTeamDiscard, SIGNAL(clicked()), this, SIGNAL(goBack())); - QHBoxLayout * page1Layout = new QHBoxLayout(page1); page1Layout->setAlignment(Qt::AlignTop); QGridLayout * page2Layout = new QGridLayout(page2); @@ -69,12 +58,6 @@ GBoxHedgehogs->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QGridLayout * GBHLayout = new QGridLayout(GBoxHedgehogs); - signalMapper1 = new QSignalMapper(this); - signalMapper2 = new QSignalMapper(this); - - connect(signalMapper1, SIGNAL(mapped(int)), this, SLOT(fixHHname(int))); - connect(signalMapper2, SIGNAL(mapped(int)), this, SLOT(setRandomName(int))); - HatsModel * hatsModel = new HatsModel(GBoxHedgehogs); for(int i = 0; i < HEDGEHOGS_PER_TEAM; i++) { @@ -91,21 +74,13 @@ HHNameEdit[i]->setMinimumWidth(120); GBHLayout->addWidget(HHNameEdit[i], i, 1); - connect(HHNameEdit[i], SIGNAL(editingFinished()), signalMapper1, SLOT(map())); - signalMapper1->setMapping(HHNameEdit[i], i); - - randButton[i] = addButton(":/res/dice.png", GBHLayout, i, 3, true); - - connect(randButton[i], SIGNAL(clicked()), signalMapper2, SLOT(map())); - signalMapper2->setMapping(randButton[i], i); + btnRandomHogName[i] = addButton(":/res/dice.png", GBHLayout, i, 3, true); } - randTeamButton = addButton(QPushButton::tr("Random Team"), GBHLayout, 9, false); - connect(randTeamButton, SIGNAL(clicked()), this, SLOT(setRandomNames())); + btnRandomTeam = addButton(QPushButton::tr("Random Team"), GBHLayout, 9, false); vbox1->addWidget(GBoxHedgehogs); - GBoxTeam = new QGroupBox(this); GBoxTeam->setTitle(QGroupBox::tr("Team Settings")); GBoxTeam->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); @@ -126,7 +101,6 @@ tmpLabel->setText(QLabel::tr("Voice")); GBTLayout->addWidget(tmpLabel, 4, 0); - TeamNameEdit = new QLineEdit(GBoxTeam); TeamNameEdit->setMaxLength(64); GBTLayout->addWidget(TeamNameEdit, 0, 1); @@ -152,34 +126,14 @@ CBFlag->setIconSize(QSize(22, 15)); GBTLayout->addWidget(CBFlag, 3, 1); - { - QHBoxLayout * hbox = new QHBoxLayout(); - CBVoicepack = new QComboBox(GBoxTeam); - { - QDir tmpdir; - QStringList list; - tmpdir.cd(cfgdir->absolutePath()); - if (tmpdir.cd("Data/Sounds/voices")) - { - list = tmpdir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name); - CBVoicepack->addItems(list); - } + QHBoxLayout * hbox = new QHBoxLayout(); + CBVoicepack = new QComboBox(GBoxTeam); - tmpdir.cd(datadir->absolutePath()); - tmpdir.cd("Sounds/voices"); - QStringList tmplist = tmpdir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name); - QStringList tmplist2; - for (QStringList::Iterator it = tmplist.begin(); it != tmplist.end(); ++it) - if (!list.contains(*it,Qt::CaseInsensitive)) tmplist2.append(*it); + hbox->addWidget(CBVoicepack, 100); + btnTestSound = addButton(":/res/PlaySound.png", hbox, 1, true); + hbox->setStretchFactor(btnTestSound, 1); - CBVoicepack->addItems(tmplist2); - } - hbox->addWidget(CBVoicepack, 100); - BtnTestSound = addButton(":/res/PlaySound.png", hbox, 1, true); - hbox->setStretchFactor(BtnTestSound, 1); - connect(BtnTestSound, SIGNAL(clicked()), this, SLOT(testSound())); - GBTLayout->addLayout(hbox, 4, 1); - } + GBTLayout->addLayout(hbox, 4, 1); GBoxFort = new QGroupBox(this); GBoxFort->setTitle(QGroupBox::tr("Fort")); @@ -196,7 +150,123 @@ GBFLayout->addWidget(FortPreview, 1, 0); vbox2->addWidget(GBoxFort); + vbox1->addStretch(); + vbox2->addStretch(); + +// ====== Page 2 ====== + GBoxBinds = new QGroupBox(this); + GBoxBinds->setTitle(QGroupBox::tr("Key binds")); + QGridLayout * GBBLayout = new QGridLayout(GBoxBinds); + BindsBox = new QToolBox(GBoxBinds); + BindsBox->setLineWidth(0); + GBBLayout->addWidget(BindsBox); + page2Layout->addWidget(GBoxBinds, 0, 0); + + quint16 i = 0; + quint16 num = 0; + QWidget * curW = NULL; + QGridLayout * pagelayout = NULL; + QLabel* l = NULL; + while (i < BINDS_NUMBER) { + if(cbinds[i].category != NULL) + { + if(curW != NULL) + { + l = new QLabel(curW); + l->setText(""); + pagelayout->addWidget(l, num++, 0, 1, 2); + } + curW = new QWidget(this); + BindsBox->addItem(curW, HWApplication::translate("binds (categories)", cbinds[i].category)); + pagelayout = new QGridLayout(curW); + num = 0; + } + if(cbinds[i].description != NULL) + { + l = new QLabel(curW); + l->setText((num > 0 ? QString("\n") : QString("")) + HWApplication::translate("binds (descriptions)", cbinds[i].description)); + pagelayout->addWidget(l, num++, 0, 1, 2); + } + + l = new QLabel(curW); + l->setText(HWApplication::translate("binds", cbinds[i].name)); + l->setAlignment(Qt::AlignRight); + pagelayout->addWidget(l, num, 0); + CBBind[i] = new QComboBox(curW); + for(int j = 0; sdlkeys[j][1][0] != '\0'; j++) + CBBind[i]->addItem(HWApplication::translate("binds (keys)", sdlkeys[j][1]).contains(": ") ? HWApplication::translate("binds (keys)", sdlkeys[j][1]) : HWApplication::translate("binds (keys)", "Keyboard") + QString(": ") + HWApplication::translate("binds (keys)", sdlkeys[j][1]), sdlkeys[j][0]); + pagelayout->addWidget(CBBind[i++], num++, 1); + } + + return pageLayout; +} + +QLayout * PageEditTeam::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout(); + + btnSave = addButton(":/res/Save.png", bottomLayout, 0, true);; + btnSave->setStyleSheet("QPushButton{margin: 24px 0 0 0;}"); + bottomLayout->setAlignment(btnSave, Qt::AlignRight | Qt::AlignBottom); + + return bottomLayout; +} + +void PageEditTeam::connectSignals() +{ + connect(btnSave, SIGNAL(clicked()), this, SLOT(saveTeam())); + + signalMapper1 = new QSignalMapper(this); + signalMapper2 = new QSignalMapper(this); + + connect(signalMapper1, SIGNAL(mapped(int)), this, SLOT(fixHHname(int))); + connect(signalMapper2, SIGNAL(mapped(int)), this, SLOT(setRandomName(int))); + + for(int i = 0; i < HEDGEHOGS_PER_TEAM; i++) + { + connect(HHNameEdit[i], SIGNAL(editingFinished()), signalMapper1, SLOT(map())); + signalMapper1->setMapping(HHNameEdit[i], i); + + connect(btnRandomHogName[i], SIGNAL(clicked()), signalMapper2, SLOT(map())); + signalMapper2->setMapping(btnRandomHogName[i], i); + } + + connect(btnRandomTeam, SIGNAL(clicked()), this, SLOT(setRandomNames())); + + connect(btnTestSound, SIGNAL(clicked()), this, SLOT(testSound())); + + connect(CBFort, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(CBFort_activated(const QString &))); +} + +PageEditTeam::PageEditTeam(QWidget* parent, SDLInteraction * sdli) : + AbstractPage(parent) +{ + initPage(); + + m_playerHash = "0000000000000000000000000000000000000000"; + mySdli = sdli; + QDir tmpdir; + QStringList list; + tmpdir.cd(cfgdir->absolutePath()); + if (tmpdir.cd("Data/Sounds/voices")) + { + list = tmpdir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name); + CBVoicepack->addItems(list); + } + + tmpdir.cd(datadir->absolutePath()); + tmpdir.cd("Sounds/voices"); + QStringList tmplist = tmpdir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name); + QStringList tmplist2; + foreach (const QString & line, tmplist) + { + if (!list.contains(line,Qt::CaseInsensitive)) + tmplist2.append(line); + } + + CBVoicepack->addItems(tmplist2); + QStringList userforts; tmpdir.cd(cfgdir->absolutePath()); if (tmpdir.cd("Data/Forts")) @@ -219,22 +289,26 @@ tmpdir.cd("Forts"); tmpdir.setFilter(QDir::Files); - QStringList tmplist = tmpdir.entryList(QStringList("*L.png")).replaceInStrings(QRegExp("^(.*)L\\.png"), "\\1"); + tmplist = tmpdir.entryList(QStringList("*L.png")).replaceInStrings(QRegExp("^(.*)L\\.png"), "\\1"); QStringList dataforts; - for (QStringList::Iterator it = tmplist.begin(); it != tmplist.end(); ++it) - if (!userforts.contains(*it,Qt::CaseInsensitive)) dataforts.append(*it); + foreach (const QString & line, tmplist) + { + if (!userforts.contains(line,Qt::CaseInsensitive)) + dataforts.append(line); + } CBFort->addItems(dataforts); - connect(CBFort, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(CBFort_activated(const QString &))); tmpdir.cd("../Graphics/Graves"); QStringList datalist = tmpdir.entryList(QStringList("*.png")); - for (QStringList::Iterator it = datalist.begin(); it != datalist.end(); ++it ) + foreach (const QString & line, datalist) { - if (userlist.contains(*it,Qt::CaseInsensitive)) continue; - QPixmap pix(datadir->absolutePath() + "/Graphics/Graves/" + *it); + if (userlist.contains(line,Qt::CaseInsensitive)) continue; + QPixmap pix(datadir->absolutePath() + "/Graphics/Graves/" + line); QIcon icon(pix.copy(0, 0, 32, 32)); - CBGrave->addItem(icon, (*it).replace(QRegExp("^(.*)\\.png"), "\\1")); + QString grave = line; + grave = grave.replace(QRegExp("^(.*)\\.png"), "\\1"); + CBGrave->addItem(icon, grave); } // add the default flag @@ -246,14 +320,16 @@ userlist = tmpdir.entryList(QStringList("*.png")); // add all country flags - for (QStringList::Iterator it = userlist.begin(); it != userlist.end(); ++it ) + foreach (const QString & line, userlist) { - QPixmap pix(cfgdir->absolutePath() + "/Data/Graphics/Flags/" + *it); + QPixmap pix(cfgdir->absolutePath() + "/Data/Graphics/Flags/" + line); QIcon icon(pix.copy(0, 0, 22, 15)); - if(it->compare("cpu.png") && it->compare("hedgewars.png") && (it->indexOf("cm_") == -1)) // skip cpu and hedgewars flags as well as all community flags + // TODO improve readablility + if(line.compare("cpu.png") && line.compare("hedgewars.png") && (line.indexOf("cm_") == -1)) // skip cpu and hedgewars flags as well as all community flags { - QString flag = QString(*it).replace(QRegExp("^(.*)\\.png"), "\\1"); - CBFlag->addItem(icon, QString(flag).replace("_", " "), flag); + QString flag = line; + flag = flag.replace(QRegExp("^(.*)\\.png"), "\\1"); + CBFlag->addItem(icon, flag.replace("_", " "), flag); } } @@ -304,55 +380,6 @@ CBFlag->addItem(icon, QString(flag).replace("cm_", QComboBox::tr("Community") + ": "), flag); } } - - vbox1->addStretch(); - vbox2->addStretch(); - -// ====== Page 2 ====== - GBoxBinds = new QGroupBox(this); - GBoxBinds->setTitle(QGroupBox::tr("Key binds")); - QGridLayout * GBBLayout = new QGridLayout(GBoxBinds); - BindsBox = new QToolBox(GBoxBinds); - BindsBox->setLineWidth(0); - GBBLayout->addWidget(BindsBox); - page2Layout->addWidget(GBoxBinds, 0, 0); - - quint16 i = 0; - quint16 num = 0; - QWidget * curW = NULL; - QGridLayout * pagelayout = NULL; - QLabel* l = NULL; - while (i < BINDS_NUMBER) { - if(cbinds[i].category != NULL) - { - if(curW != NULL) - { - l = new QLabel(curW); - l->setText(""); - pagelayout->addWidget(l, num++, 0, 1, 2); - } - curW = new QWidget(this); - BindsBox->addItem(curW, HWApplication::translate("binds (categories)", cbinds[i].category)); - pagelayout = new QGridLayout(curW); - num = 0; - } - if(cbinds[i].description != NULL) - { - l = new QLabel(curW); - l->setText((num > 0 ? QString("\n") : QString("")) + HWApplication::translate("binds (descriptions)", cbinds[i].description)); - pagelayout->addWidget(l, num++, 0, 1, 2); - } - - l = new QLabel(curW); - l->setText(HWApplication::translate("binds", cbinds[i].name)); - l->setAlignment(Qt::AlignRight); - pagelayout->addWidget(l, num, 0); - CBBind[i] = new QComboBox(curW); - for(int j = 0; sdlkeys[j][1][0] != '\0'; j++) - CBBind[i]->addItem(HWApplication::translate("binds (keys)", sdlkeys[j][1]).contains(": ") ? HWApplication::translate("binds (keys)", sdlkeys[j][1]) : HWApplication::translate("binds (keys)", "Keyboard") + QString(": ") + HWApplication::translate("binds (keys)", sdlkeys[j][1]), sdlkeys[j][0]); - pagelayout->addWidget(CBBind[i++], num++, 1); - } - } void PageEditTeam::fixHHname(int idx) @@ -494,4 +521,3 @@ data().saveToFile(); emit teamEdited(); } - diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageeditteam.h --- a/QTfrontend/pageeditteam.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageeditteam.h Tue Sep 27 00:38:39 2011 +0200 @@ -47,7 +47,6 @@ void CBFort_activated(const QString & gravename); private: - QPushButton * randTeamButton; QSignalMapper* signalMapper1; QSignalMapper* signalMapper2; QGroupBox *GBoxHedgehogs; @@ -61,20 +60,28 @@ QComboBox *CBVoicepack; QGroupBox *GBoxBinds; QToolBox *BindsBox; - QPushButton *BtnTeamDiscard; - QPushButton *BtnTeamSave; - QPushButton * BtnTestSound; QLineEdit * TeamNameEdit; QLineEdit * HHNameEdit[HEDGEHOGS_PER_TEAM]; QComboBox * HHHats[HEDGEHOGS_PER_TEAM]; - QPushButton * randButton[HEDGEHOGS_PER_TEAM]; QComboBox * CBBind[BINDS_NUMBER]; SDLInteraction * mySdli; HWTeam data(); QString m_playerHash; + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); + void loadTeam(const HWTeam & team); + // page 1 + QPushButton * btnRandomHogName[HEDGEHOGS_PER_TEAM]; + QPushButton * btnRandomTeam; + QPushButton * btnTestSound; + + // footer + QPushButton * btnSave; + private slots: void saveTeam(); void setRandomNames(); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagegamestats.cpp --- a/QTfrontend/pagegamestats.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagegamestats.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -37,26 +38,14 @@ fitInView(sceneRect()); } -PageGameStats::PageGameStats(QWidget* parent) : AbstractPage(parent) +QLayout * PageGameStats::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pageLayout->setSpacing(20); pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 1); pageLayout->setContentsMargins(7, 7, 7, 0); - BtnSave = addButton(":/res/Save.png", pageLayout, 3, 2, true); - BtnSave->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}"); - connect(BtnSave, SIGNAL(clicked()), this, SIGNAL(saveDemoRequested())); - - - BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true); - BtnBack->setFixedHeight(BtnSave->height()); - BtnBack->setFixedWidth(BtnBack->width()+2); - BtnBack->setStyleSheet("QPushButton{margin: 22px 0 9px 2px;}"); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - - QGroupBox * gb = new QGroupBox(this); QVBoxLayout * gbl = new QVBoxLayout; @@ -104,6 +93,29 @@ labelGameRank->setTextFormat(Qt::RichText); labelGameRank->setAlignment(Qt::AlignTop); pageLayout->addWidget(gb, 1, 0); + + return pageLayout; +} + +QLayout * PageGameStats::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout(); + + btnSave = addButton(":/res/Save.png", bottomLayout, 0, true); + btnSave->setStyleSheet("QPushButton{margin: 24px 0 0 0;}"); + bottomLayout->setAlignment(btnSave, Qt::AlignRight | Qt::AlignBottom); + + return bottomLayout; +} + +void PageGameStats::connectSignals() +{ + connect(btnSave, SIGNAL(clicked()), this, SIGNAL(saveDemoRequested())); +} + +PageGameStats::PageGameStats(QWidget* parent) : AbstractPage(parent) +{ + initPage(); } void PageGameStats::AddStatText(const QString & msg) diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagegamestats.h --- a/QTfrontend/pagegamestats.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagegamestats.h Tue Sep 27 00:38:39 2011 +0200 @@ -43,7 +43,7 @@ public: PageGameStats(QWidget* parent = 0); - QPushButton *BtnSave; + QPushButton *btnSave; QLabel *labelGameStats; QLabel *labelGameWin; QLabel *labelGameRank; @@ -64,7 +64,10 @@ unsigned int playerPosition; quint32 lastColor; - QPushButton *BtnBack; +protected: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); }; #endif // STATSPAGE_H diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageinfo.cpp --- a/QTfrontend/pageinfo.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageinfo.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -22,9 +22,10 @@ #include "pageinfo.h" #include "about.h" -PageInfo::PageInfo(QWidget* parent) : AbstractPage(parent) +QLayout * PageInfo::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); + pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 1); pageLayout->setColumnStretch(2, 1); @@ -34,7 +35,21 @@ about = new About(this); pageLayout->addWidget(about, 0, 0, 1, 3); + return pageLayout; +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +QLayout * PageInfo::footerLayoutDefinition() +{ + return NULL; // TODO: move screenshot button here } + +void PageInfo::connectSignals() +{ + //TODO +} + +PageInfo::PageInfo(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} + diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageinfo.h --- a/QTfrontend/pageinfo.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageinfo.h Tue Sep 27 00:38:39 2011 +0200 @@ -34,7 +34,9 @@ About *about; private: - QPushButton *BtnBack; + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageingame.cpp --- a/QTfrontend/pageingame.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageingame.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -16,14 +16,25 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +#include #include #include "pageingame.h" -PageInGame::PageInGame(QWidget* parent) : - AbstractPage(parent) +QLayout * PageInGame::bodyLayoutDefinition() { + QHBoxLayout * pageLayout = new QHBoxLayout(); + QLabel * label = new QLabel(this); - label->setText("In game..."); + label->setText(tr("In game...")); + pageLayout->addWidget(label); + + setBackButtonVisible(false); + + return pageLayout; } +PageInGame::PageInGame(QWidget * parent) : AbstractPage(parent) +{ + initPage(); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageingame.h --- a/QTfrontend/pageingame.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageingame.h Tue Sep 27 00:38:39 2011 +0200 @@ -25,8 +25,10 @@ { Q_OBJECT -public: - PageInGame(QWidget* parent = 0); + public: + PageInGame(QWidget * parent = 0); + + QLayout * bodyLayoutDefinition(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagemain.cpp --- a/QTfrontend/pagemain.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagemain.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -25,11 +26,9 @@ #include "hwconsts.h" #include "hwform.h" -PageMain::PageMain(QWidget* parent) : - AbstractPage(parent) +QLayout * PageMain::bodyLayoutDefinition() { - if(frontendEffects) setAttribute(Qt::WA_NoSystemBackground, true); - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); //pageLayout->setColumnStretch(0, 1); //pageLayout->setColumnStretch(1, 2); //pageLayout->setColumnStretch(2, 1); @@ -41,7 +40,11 @@ pageLayout->setRowStretch(2, 0); pageLayout->setRowStretch(3, 1); pageLayout->setRowStretch(4, 1); - pageLayout->setRowStretch(5, 1); + + //BtnInfo = addButton(":/res/About.png", pageLayout, 3, 1, 1, 2, true); + BtnInfo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true); + BtnInfo->setStyleSheet("border: transparent;background: transparent;"); + pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter); BtnSinglePlayer = addButton(":/res/LocalPlay.png", pageLayout, 2, 0, 1, 2, true); BtnSinglePlayer->setToolTip(tr("Local Game (Play a game on a single computer)")); @@ -54,14 +57,50 @@ BtnDataDownload = addButton(tr("Downloadable Content"), pageLayout, 4, 0, 1, 4, false); pageLayout->setAlignment(BtnDataDownload, Qt::AlignHCenter); + return pageLayout; +} + +QLayout * PageMain::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout(); + mainNote = new QLabel(this); mainNote->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); mainNote->setWordWrap(true); + + bottomLayout->addWidget(mainNote, 0); + bottomLayout->setStretch(0,1); + + BtnSetup = addButton(":/res/Settings.png", bottomLayout, 1, true); + bottomLayout->setStretch(1,0); + + return bottomLayout; +} + +void PageMain::connectSignals() +{ + //TODO +} + +PageMain::PageMain(QWidget* parent) : AbstractPage(parent) +{ + initPage(); + + if(frontendEffects) setAttribute(Qt::WA_NoSystemBackground, true); mainNote->setOpenExternalLinks(true); if(!isDevBuild) { - QStringList Tips; + mainNote->setText(QLabel::tr("Tip: ") + randomTip()); + } + else + mainNote->setText(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!")); + +} + +QString PageMain::randomTip() const +{ + QStringList Tips; Tips << tr("Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.", "Tips"); Tips << tr("Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.", "Tips"); Tips << tr("If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!", "Tips"); @@ -115,25 +154,9 @@ Tips << tr("You can find your Hedgewars configuration files under \"My Documents\\Hedgewars\". Create backups or take the files with you, but don't edit them by hand.", "Tips"); #elif defined __APPLE__ Tips << tr("You can find your Hedgewars configuration files under \"Library/Application Support/Hedgewars\" in your home directory. Create backups or take the files with you, but don't edit them by hand.", "Tips"); -#else +#else Tips << tr("You can find your Hedgewars configuration files under \".hedgewars\" in your home directory. Create backups or take the files with you, but don't edit them by hand.", "Tips"); #endif - mainNote->setText(QLabel::tr("Tip: ") + Tips[QTime(0, 0, 0).secsTo(QTime::currentTime()) % Tips.length()]); - } - else - mainNote->setText(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!")); - pageLayout->addWidget(mainNote, 5, 1, 1, 2); - - BtnSetup = addButton(":/res/Settings.png", pageLayout, 5, 3, true); - - //BtnInfo = addButton(":/res/About.png", pageLayout, 3, 1, 1, 2, true); - BtnInfo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true); - BtnInfo->setStyleSheet("border: transparent;background: transparent;"); - pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter); - //pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter); - - BtnExit = addButton(":/res/Exit.png", pageLayout, 5, 0, 1, 1, true); - BtnExit->setFixedHeight(BtnSetup->height()); - BtnExit->setStyleSheet("QPushButton{margin-top: 2px;}"); + return Tips[QTime(0, 0, 0).secsTo(QTime::currentTime()) % Tips.length()]; } diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagemain.h --- a/QTfrontend/pagemain.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagemain.h Tue Sep 27 00:38:39 2011 +0200 @@ -26,15 +26,21 @@ Q_OBJECT public: - PageMain(QWidget* parent = 0); + PageMain(QWidget * parent = 0); - QPushButton *BtnSinglePlayer; - QPushButton *BtnNet; - QPushButton *BtnSetup; - QPushButton *BtnInfo; - QPushButton *BtnExit; - QPushButton *BtnDataDownload; - QLabel *mainNote; + QPushButton * BtnSinglePlayer; + QPushButton * BtnNet; + QPushButton * BtnSetup; + QPushButton * BtnInfo; + QPushButton * BtnDataDownload; + QLabel * mainNote; + +private: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); + + QString randomTip() const; }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagemultiplayer.cpp --- a/QTfrontend/pagemultiplayer.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagemultiplayer.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -23,17 +23,15 @@ #include "gamecfgwidget.h" #include "teamselect.h" -PageMultiplayer::PageMultiplayer(QWidget* parent) : - AbstractPage(parent) +QLayout * PageMultiplayer::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); gameCFG = new GameCFGWidget(this); pageLayout->addWidget(gameCFG, 0, 0, 1, 2); - QPushButton * btnSetup = new QPushButton(this); + btnSetup = new QPushButton(this); btnSetup->setText(QPushButton::tr("Setup")); - connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); pageLayout->addWidget(btnSetup, 1, 0, 1, 2); pageLayout->setRowStretch(2, 1); @@ -43,7 +41,15 @@ BtnStartMPGame = addButton(tr("Start"), pageLayout, 3, 3); + return pageLayout; +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +void PageMultiplayer::connectSignals() +{ + PageMultiplayer::connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); } + +PageMultiplayer::PageMultiplayer(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagemultiplayer.h --- a/QTfrontend/pagemultiplayer.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagemultiplayer.h Tue Sep 27 00:38:39 2011 +0200 @@ -35,11 +35,14 @@ TeamSelWidget *teamsSelect; QPushButton *BtnStartMPGame; -private: - QPushButton *BtnBack; - signals: void SetupClicked(); + +private: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + + QPushButton * btnSetup; }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenet.cpp --- a/QTfrontend/pagenet.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenet.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -27,10 +27,10 @@ #include "hwconsts.h" #include "netudpwidget.h" -PageNet::PageNet(QWidget* parent) : AbstractPage(parent) +QLayout * PageNet::bodyLayoutDefinition() { - QFont * font14 = new QFont("MS Shell Dlg", 14); - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); + pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 1); pageLayout->setColumnStretch(2, 1); @@ -41,11 +41,6 @@ BtnNetSvrStart->setVisible(haveServer); pageLayout->addWidget(BtnNetSvrStart, 4, 2); - - BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - - ConnGroupBox = new QGroupBox(this); ConnGroupBox->setTitle(QGroupBox::tr("Net game")); pageLayout->addWidget(ConnGroupBox, 2, 0, 1, 3); @@ -73,9 +68,19 @@ BtnSpecifyServer->setText(QPushButton::tr("Specify")); GBClayout->addWidget(BtnSpecifyServer, 2, 1); + return pageLayout; +} + +void PageNet::connectSignals() +{ connect(BtnNetConnect, SIGNAL(clicked()), this, SLOT(slotConnect())); } +PageNet::PageNet(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} + void PageNet::updateServersList() { tvServersList->setModel(new HWNetUdpModel(tvServersList)); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenet.h --- a/QTfrontend/pagenet.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenet.h Tue Sep 27 00:38:39 2011 +0200 @@ -34,19 +34,21 @@ QPushButton * BtnNetSvrStart; QPushButton * BtnSpecifyServer; -private: - QGroupBox * ConnGroupBox; - QGridLayout * GBClayout; - QPushButton * BtnBack; - -private slots: - void slotConnect(); - public slots: void updateServersList(); signals: void connectClicked(const QString & host, quint16 port); + +private: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + + QGroupBox * ConnGroupBox; + QGridLayout * GBClayout; + +private slots: + void slotConnect(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenetgame.cpp --- a/QTfrontend/pagenetgame.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenetgame.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -27,16 +27,16 @@ #include "teamselect.h" #include "chatwidget.h" -PageNetGame::PageNetGame(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli) : AbstractPage(parent) +QLayout * PageNetGame::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pageLayout->setSizeConstraint(QLayout::SetMinimumSize); //pageLayout->setSpacing(1); pageLayout->setColumnStretch(0, 50); pageLayout->setColumnStretch(1, 50); // chatwidget - pChatWidget = new HWChatWidget(this, gameSettings, sdli, true); + pChatWidget = new HWChatWidget(this, m_gameSettings, m_sdli, true); pChatWidget->setShowReady(true); // show status bulbs by default pChatWidget->setShowFollow(false); // don't show follow in nicks' context menus pageLayout->addWidget(pChatWidget, 2, 0, 1, 2); @@ -46,30 +46,25 @@ pGameCFG = new GameCFGWidget(this); pageLayout->addWidget(pGameCFG, 0, 0); - QPushButton * btnSetup = new QPushButton(this); + btnSetup = new QPushButton(this); btnSetup->setText(QPushButton::tr("Setup")); - connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); pageLayout->addWidget(btnSetup, 1, 0); pNetTeamsWidget = new TeamSelWidget(this); pNetTeamsWidget->setAcceptOuter(true); pageLayout->addWidget(pNetTeamsWidget, 0, 1, 2, 1); - - QHBoxLayout * bottomLayout = new QHBoxLayout; - pageLayout->addLayout(bottomLayout, 4, 0, 1, 2); + return pageLayout; +} - - BtnBack = addButton(":/res/Exit.png", bottomLayout, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - +QLayout * PageNetGame::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout; leRoomName = new QLineEdit(this); leRoomName->setMaxLength(60); leRoomName->setMinimumWidth(200); leRoomName->setMaximumWidth(400); - bottomLayout->addWidget(leRoomName, 8,0); - BtnUpdate = addButton(QAction::tr("Update"), bottomLayout, 1, false); BtnGo = new QPushButton(this); BtnGo->setToolTip(QPushButton::tr("Ready")); @@ -77,11 +72,36 @@ BtnGo->setIconSize(QSize(25, 34)); BtnGo->setMinimumWidth(50); BtnGo->setMinimumHeight(50); - bottomLayout->addWidget(BtnGo, 4); - BtnMaster = addButton(tr("Control"), bottomLayout, 2); + bottomLayout->addWidget(leRoomName); + BtnUpdate = addButton(QAction::tr("Update"), bottomLayout, 1, false); + bottomLayout->addWidget(BtnGo); + + BtnMaster = addButton(tr("Control"), bottomLayout, 3); + bottomLayout->insertStretch(3, 100); + + BtnStart = addButton(QAction::tr("Start"), bottomLayout, 3); + + return bottomLayout; +} + +void PageNetGame::connectSignals() +{ + connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); + + connect(BtnUpdate, SIGNAL(clicked()), this, SLOT(onUpdateClick())); +} + +PageNetGame::PageNetGame(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli) : AbstractPage(parent) +{ + m_gameSettings = gameSettings; + m_sdli = sdli; + + initPage(); + QMenu * menu = new QMenu(BtnMaster); + restrictJoins = new QAction(QAction::tr("Restrict Joins"), menu); restrictJoins->setCheckable(true); restrictTeamAdds = new QAction(QAction::tr("Restrict Team Additions"), menu); @@ -92,11 +112,6 @@ BtnMaster->setMenu(menu); - BtnStart = addButton(QAction::tr("Start"), bottomLayout, 3); - - bottomLayout->insertStretch(3, 100); - - connect(BtnUpdate, SIGNAL(clicked()), this, SLOT(onUpdateClick())); } void PageNetGame::setReadyStatus(bool isReady) diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenetgame.h --- a/QTfrontend/pagenetgame.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenetgame.h Tue Sep 27 00:38:39 2011 +0200 @@ -31,7 +31,7 @@ Q_OBJECT public: - PageNetGame(QWidget* parent, QSettings * config, SDLInteraction * sdli); + PageNetGame(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli); QPushButton *BtnGo; QPushButton *BtnMaster; @@ -48,9 +48,6 @@ TeamSelWidget* pNetTeamsWidget; GameCFGWidget* pGameCFG; -private: - QPushButton *BtnBack; - public slots: void setReadyStatus(bool isReady); void onUpdateClick(); @@ -59,6 +56,16 @@ signals: void SetupClicked(); void askForUpdateRoomName(const QString &); + +private: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); + + QSettings * m_gameSettings; + SDLInteraction * m_sdli; + + QPushButton * btnSetup; }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenetserver.cpp --- a/QTfrontend/pagenetserver.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenetserver.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -17,6 +17,8 @@ */ #include +#include +#include #include #include #include @@ -25,29 +27,12 @@ #include "pagenetserver.h" -PageNetServer::PageNetServer(QWidget* parent) : AbstractPage(parent) +QLayout * PageNetServer::bodyLayoutDefinition() { - QFont * font14 = new QFont("MS Shell Dlg", 14); - QGridLayout * pageLayout = new QGridLayout(this); - pageLayout->setColumnStretch(0, 1); - pageLayout->setColumnStretch(1, 1); - pageLayout->setColumnStretch(2, 1); - - pageLayout->setRowStretch(0, 1); - pageLayout->setRowStretch(1, 0); - - - BtnBack =addButton(":/res/Exit.png", pageLayout, 1, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - - - BtnStart = new QPushButton(this); - BtnStart->setFont(*font14); - BtnStart->setText(QPushButton::tr("Start")); - pageLayout->addWidget(BtnStart, 1, 2); + QVBoxLayout * pageLayout = new QVBoxLayout(); QWidget * wg = new QWidget(this); - pageLayout->addWidget(wg, 0, 0, 1, 3); + pageLayout->addWidget(wg); QGridLayout * wgLayout = new QGridLayout(wg); wgLayout->setColumnStretch(0, 1); @@ -82,9 +67,33 @@ BtnDefault->setText(QPushButton::tr("default")); gbLayout->addWidget(BtnDefault, 1, 2); + return pageLayout; +} + +QLayout * PageNetServer::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout(); + + BtnStart = new QPushButton(this); + BtnStart->setFont(*font14); + BtnStart->setText(QPushButton::tr("Start")); + + bottomLayout->addStretch(); + bottomLayout->addWidget(BtnStart); + + return bottomLayout; +} + +void PageNetServer::connectSignals() +{ connect(BtnDefault, SIGNAL(clicked()), this, SLOT(setDefaultPort())); } +PageNetServer::PageNetServer(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} + void PageNetServer::setDefaultPort() { sbPort->setValue(46631); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenetserver.h --- a/QTfrontend/pagenetserver.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenetserver.h Tue Sep 27 00:38:39 2011 +0200 @@ -35,8 +35,10 @@ QLabel *labelPort; QSpinBox *sbPort; -private: - QPushButton *BtnBack; +protected: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); private slots: void setDefaultPort(); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenettype.cpp --- a/QTfrontend/pagenettype.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenettype.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -21,9 +21,10 @@ #include "pagenettype.h" -PageNetType::PageNetType(QWidget* parent) : AbstractPage(parent) + +QLayout * PageNetType::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pageLayout->setRowStretch(0, 10); pageLayout->setRowStretch(3, 10); @@ -37,7 +38,10 @@ // hack: temporary deactivated - requires server modifications that aren't backward compatible (yet) //BtnOfficialServer->setEnabled(false); + return pageLayout; +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +PageNetType::PageNetType(QWidget* parent) : AbstractPage(parent) +{ + initPage(); } diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagenettype.h --- a/QTfrontend/pagenettype.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagenettype.h Tue Sep 27 00:38:39 2011 +0200 @@ -31,8 +31,8 @@ QPushButton * BtnLAN; QPushButton * BtnOfficialServer; -private: - QPushButton * BtnBack; +protected: + QLayout * bodyLayoutDefinition(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageoptions.cpp --- a/QTfrontend/pageoptions.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageoptions.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -33,10 +34,10 @@ #include "fpsedit.h" #include "igbox.h" -PageOptions::PageOptions(QWidget* parent) : - AbstractPage(parent) +// TODO cleanup +QLayout * PageOptions::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pageLayout->setColumnStretch(0, 100); pageLayout->setColumnStretch(1, 100); pageLayout->setColumnStretch(2, 100); @@ -298,12 +299,10 @@ CBResolution = new QComboBox(AGGroupBox); GBAreslayout->addWidget(CBResolution); GBAlayout->addLayout(GBAreslayout); - connect(CBResolution, SIGNAL(currentIndexChanged(int)), this, SLOT(setResolution(int))); CBFullscreen = new QCheckBox(AGGroupBox); CBFullscreen->setText(QCheckBox::tr("Fullscreen")); GBAlayout->addWidget(CBFullscreen); - connect(CBFullscreen, SIGNAL(stateChanged(int)), this, SLOT(setFullscreen(int))); QLabel * quality = new QLabel(AGGroupBox); quality->setText(QLabel::tr("Quality")); @@ -317,7 +316,6 @@ SLQuality->setFixedWidth(150); GBAqualayout->addWidget(SLQuality); GBAlayout->addLayout(GBAqualayout); - connect(SLQuality, SIGNAL(valueChanged(int)), this, SLOT(setQuality(int))); QLabel * stereo = new QLabel(AGGroupBox); stereo->setText(QLabel::tr("Stereo rendering")); @@ -401,19 +399,32 @@ gbTBLayout->addWidget(AGGroupBox, 0, 1, 3, 1); } - BtnSaveOptions = addButton(":/res/Save.png", pageLayout, 2, 2, true); - BtnSaveOptions->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}"); - - - BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true); - BtnBack->setFixedHeight(BtnSaveOptions->height()); - BtnBack->setFixedWidth(BtnBack->width()+2); - BtnBack->setStyleSheet("QPushButton{margin: 22px 0 9px 2px;}"); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - previousQuality = this->SLQuality->value(); previousResolutionIndex = this->CBResolution->currentIndex(); previousFullscreenValue = this->CBFullscreen->isChecked(); + + return pageLayout; +} + +QLayout * PageOptions::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout(); + btnSave = addButton(":/res/Save.png", bottomLayout, 0, true); + btnSave->setStyleSheet("QPushButton{margin: 24px 0 0 0;}"); + bottomLayout->setAlignment(btnSave, Qt::AlignRight | Qt::AlignBottom); + return bottomLayout; +} + +void PageOptions::connectSignals() +{ + connect(CBResolution, SIGNAL(currentIndexChanged(int)), this, SLOT(setResolution(int))); + connect(CBFullscreen, SIGNAL(stateChanged(int)), this, SLOT(setFullscreen(int))); + connect(SLQuality, SIGNAL(valueChanged(int)), this, SLOT(setQuality(int))); +} + +PageOptions::PageOptions(QWidget* parent) : AbstractPage(parent) +{ + initPage(); } void PageOptions::forceFullscreen(int index) @@ -479,4 +490,3 @@ CBTeamName->setVisible(enabled); LblNoEditTeam->setVisible(!enabled); } - diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageoptions.h --- a/QTfrontend/pageoptions.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageoptions.h Tue Sep 27 00:38:39 2011 +0200 @@ -63,7 +63,7 @@ #endif FPSEdit *fpsedit; - QPushButton *BtnSaveOptions; + QPushButton *btnSave; QLabel *labelNN; QLabel *labelNetPassword; QSpinBox * volumeBox; @@ -81,6 +81,10 @@ private: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); + bool previousFullscreenValue; int previousResolutionIndex; int previousQuality; @@ -88,7 +92,6 @@ QPushButton *BtnNewTeam; QPushButton *BtnEditTeam; QPushButton *BtnDeleteTeam; - QPushButton *BtnBack; private slots: void forceFullscreen(int index); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageplayrecord.cpp --- a/QTfrontend/pageplayrecord.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageplayrecord.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -28,10 +28,10 @@ #include "hwconsts.h" #include "pageplayrecord.h" -PagePlayDemo::PagePlayDemo(QWidget* parent) : AbstractPage(parent) +QLayout * PagePlayDemo::bodyLayoutDefinition() { - QFont * font14 = new QFont("MS Shell Dlg", 14); - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); + pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 2); pageLayout->setColumnStretch(2, 1); @@ -54,12 +54,18 @@ DemosList->setGeometry(QRect(170, 10, 311, 311)); pageLayout->addWidget(DemosList, 0, 1, 3, 1); + return pageLayout; +} + +void PagePlayDemo::connectSignals() +{ connect(BtnRenameRecord, SIGNAL(clicked()), this, SLOT(renameRecord())); connect(BtnRemoveRecord, SIGNAL(clicked()), this, SLOT(removeRecord())); - +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +PagePlayDemo::PagePlayDemo(QWidget* parent) : AbstractPage(parent) +{ + initPage(); } void PagePlayDemo::FillFromDir(RecordType rectype) diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageplayrecord.h --- a/QTfrontend/pageplayrecord.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageplayrecord.h Tue Sep 27 00:38:39 2011 +0200 @@ -47,8 +47,10 @@ QListWidget *DemosList; private: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + RecordType recType; - QPushButton *BtnBack; private slots: void renameRecord(); diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageroomslist.cpp --- a/QTfrontend/pageroomslist.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageroomslist.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -30,10 +30,9 @@ #include "hwconsts.h" #include "chatwidget.h" -PageRoomsList::PageRoomsList(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli) : - AbstractPage(parent) +QLayout * PageRoomsList::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); QHBoxLayout * newRoomLayout = new QHBoxLayout(); QLabel * roomNameLabel = new QLabel(this); @@ -57,11 +56,8 @@ QHBoxLayout * filterLayout = new QHBoxLayout(); QLabel * stateLabel = new QLabel(this); - stateLabel->setText(tr("State:")); CBState = new QComboBox(this); - CBState->addItem(QComboBox::tr("Any")); - CBState->addItem(QComboBox::tr("In lobby")); - CBState->addItem(QComboBox::tr("In progress")); + filterLayout->addWidget(stateLabel); filterLayout->addWidget(CBState); filterLayout->addSpacing(30); @@ -69,11 +65,7 @@ QLabel * ruleLabel = new QLabel(this); ruleLabel->setText(tr("Rules:")); CBRules = new QComboBox(this); - CBRules->addItem(QComboBox::tr("Any")); - // not the most elegant solution but it works - ammoSchemeModel = new AmmoSchemeModel(this, NULL); - for (int i = 0; i < ammoSchemeModel->predefSchemesNames.count(); i++) - CBRules->addItem(ammoSchemeModel->predefSchemesNames.at(i).toAscii().constData()); + filterLayout->addWidget(ruleLabel); filterLayout->addWidget(CBRules); filterLayout->addSpacing(30); @@ -81,11 +73,7 @@ QLabel * weaponLabel = new QLabel(this); weaponLabel->setText(tr("Weapons:")); CBWeapons = new QComboBox(this); - CBWeapons->addItem(QComboBox::tr("Any")); - for (int i = 0; i < cDefaultAmmos.count(); i++) { - QPair ammo = cDefaultAmmos.at(i); - CBWeapons->addItem(ammo.first.toAscii().constData()); - } + filterLayout->addWidget(weaponLabel); filterLayout->addWidget(CBWeapons); filterLayout->addSpacing(30); @@ -99,7 +87,7 @@ pageLayout->addLayout(filterLayout, 4, 0, 1, 2); - chatWidget = new HWChatWidget(this, gameSettings, sdli, false); + chatWidget = new HWChatWidget(this, m_gameSettings, m_sdli, false); pageLayout->addWidget(chatWidget, 5, 0, 1, 3); pageLayout->setRowStretch(5, 350); @@ -108,19 +96,31 @@ BtnRefresh = addButton(tr("Refresh"), pageLayout, 3, 2); BtnClear = addButton(tr("Clear"), pageLayout, 4, 2); + CBRules->addItem(QComboBox::tr("Any")); + CBState->addItem(QComboBox::tr("Any")); + CBState->addItem(QComboBox::tr("In lobby")); + CBState->addItem(QComboBox::tr("In progress")); - BtnBack = addButton(":/res/Exit.png", pageLayout, 6, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); + return pageLayout; +} +QLayout * PageRoomsList::footerLayoutDefinition() +{ + QGridLayout * bottomLayout = new QGridLayout(); lblCount = new QLabel(this); - pageLayout->addWidget(lblCount, 6, 1, Qt::AlignHCenter); + bottomLayout->addWidget(lblCount, 0, 0, Qt::AlignHCenter); lblCount->setText("?"); lblCount->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); - connect(chatWidget, SIGNAL(nickCountUpdate(const int)), this, SLOT(updateNickCounter(const int))); + BtnAdmin = addButton(tr("Admin features"), bottomLayout, 6, 2); - BtnAdmin = addButton(tr("Admin features"), pageLayout, 6, 2); + return bottomLayout; +} + +void PageRoomsList::connectSignals() +{ + connect(chatWidget, SIGNAL(nickCountUpdate(const int)), this, SLOT(updateNickCounter(const int))); connect(BtnCreate, SIGNAL(clicked()), this, SLOT(onCreateClick())); connect(BtnJoin, SIGNAL(clicked()), this, SLOT(onJoinClick())); @@ -132,6 +132,27 @@ connect(CBWeapons, SIGNAL(currentIndexChanged (int)), this, SLOT(onRefreshClick())); connect(searchText, SIGNAL(textChanged (const QString &)), this, SLOT(onRefreshClick())); connect(this, SIGNAL(askJoinConfirmation (const QString &)), this, SLOT(onJoinConfirmation(const QString &)), Qt::QueuedConnection); +} + + +PageRoomsList::PageRoomsList(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli) : + AbstractPage(parent) +{ + m_gameSettings = gameSettings; + m_sdli = sdli; + + initPage(); + + // not the most elegant solution but it works + ammoSchemeModel = new AmmoSchemeModel(this, NULL); + for (int i = 0; i < ammoSchemeModel->predefSchemesNames.count(); i++) + CBRules->addItem(ammoSchemeModel->predefSchemesNames.at(i).toAscii().constData()); + + CBWeapons->addItem(QComboBox::tr("Any")); + for (int i = 0; i < cDefaultAmmos.count(); i++) { + QPair ammo = cDefaultAmmos.at(i); + CBWeapons->addItem(ammo.first.toAscii().constData()); + } gameInLobby = false; } @@ -396,4 +417,3 @@ { lblCount->setText(tr("%1 players online", 0, cnt).arg(cnt)); } - diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageroomslist.h --- a/QTfrontend/pageroomslist.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageroomslist.h Tue Sep 27 00:38:39 2011 +0200 @@ -46,18 +46,22 @@ HWChatWidget * chatWidget; QLabel * lblCount; -private: - bool gameInLobby; - QString gameInLobbyName; - QStringList listFromServer; - AmmoSchemeModel * ammoSchemeModel; - QPushButton * BtnBack; - public slots: void setRoomsList(const QStringList & list); void setAdmin(bool); void updateNickCounter(int cnt); +signals: + void askForCreateRoom(const QString &); + void askForJoinRoom(const QString &); + void askForRoomList(); + void askJoinConfirmation(const QString &); + +protected: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); + private slots: void onCreateClick(); void onJoinClick(); @@ -65,11 +69,15 @@ void onClearClick(); void onJoinConfirmation(const QString &); -signals: - void askForCreateRoom(const QString &); - void askForJoinRoom(const QString &); - void askForRoomList(); - void askJoinConfirmation(const QString &); +private: + QSettings * m_gameSettings; + SDLInteraction * m_sdli; + + bool gameInLobby; + QString gameInLobbyName; + QStringList listFromServer; + AmmoSchemeModel * ammoSchemeModel; + }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagescheme.cpp --- a/QTfrontend/pagescheme.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagescheme.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -30,10 +31,10 @@ #include "pagescheme.h" #include "misc.h" -PageScheme::PageScheme(QWidget* parent) : - AbstractPage(parent) + +QLayout * PageScheme::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); QGroupBox * gb = new QGroupBox(this); QGridLayout * gl = new QGridLayout(); @@ -47,6 +48,7 @@ gbGameModes = new QGroupBox(QGroupBox::tr("Game Modifiers"), gb); gbBasicSettings = new QGroupBox(QGroupBox::tr("Basic Settings"), gb); + // TODO name stuff and put CSS into main style sheet gbGameModes->setStyleSheet(".QGroupBox {" "background-color: #130f2c; background-image:url();" "}"); @@ -388,27 +390,41 @@ gl->addWidget(LE_name,15,1,1,5); gl->addWidget(l,15,0,1,1); - mapper = new QDataWidgetMapper(this); - + return pageLayout; +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 16, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - +QLayout * PageScheme::footerLayoutDefinition() +{ + QHBoxLayout * bottomLayout = new QHBoxLayout(); + selectScheme = new QComboBox(this); - BtnCopy = addButton(tr("Copy"), pageLayout, 16, 2); - BtnNew = addButton(tr("New"), pageLayout, 16, 3); - BtnDelete = addButton(tr("Delete"), pageLayout, 16, 4); + bottomLayout->addWidget(selectScheme, 0); + BtnCopy = addButton(tr("Copy"), bottomLayout, 1); + BtnNew = addButton(tr("New"), bottomLayout, 2); + BtnDelete = addButton(tr("Delete"), bottomLayout, 3); - selectScheme = new QComboBox(this); - pageLayout->addWidget(selectScheme, 16, 1); + bottomLayout->setStretch(1,1); + bottomLayout->setStretch(2,1); + bottomLayout->setStretch(3,1); + return bottomLayout; +} + +void PageScheme::connectSignals() +{ connect(BtnCopy, SIGNAL(clicked()), this, SLOT(copyRow())); connect(BtnNew, SIGNAL(clicked()), this, SLOT(newRow())); connect(BtnDelete, SIGNAL(clicked()), this, SLOT(deleteRow())); + mapper = new QDataWidgetMapper(this); connect(selectScheme, SIGNAL(currentIndexChanged(int)), mapper, SLOT(setCurrentIndex(int))); connect(selectScheme, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeSelected(int))); } +PageScheme::PageScheme(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} + void PageScheme::setModel(QAbstractItemModel * model) { mapper->setModel(model); @@ -490,3 +506,5 @@ gbBasicSettings->setEnabled(n >= c); LE_name->setEnabled(n >= c); } + + diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagescheme.h --- a/QTfrontend/pagescheme.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagescheme.h Tue Sep 27 00:38:39 2011 +0200 @@ -34,7 +34,7 @@ QPushButton * BtnCopy; QPushButton * BtnNew; QPushButton * BtnDelete; - QPushButton * BtnSave; + QPushButton * btnSave; QComboBox * selectScheme; void setModel(QAbstractItemModel * model); @@ -44,9 +44,12 @@ void copyRow(); void deleteRow(); +protected: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); + private: - QPushButton * BtnBack; - QDataWidgetMapper * mapper; ToggleButtonWidget * TBW_mode_Forts; ToggleButtonWidget * TBW_teamsDivide; @@ -96,7 +99,6 @@ private slots: void schemeSelected(int); - }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageselectweapon.cpp --- a/QTfrontend/pageselectweapon.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageselectweapon.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -17,6 +17,7 @@ */ #include +#include #include #include @@ -24,34 +25,51 @@ #include "hwconsts.h" #include "selectWeapon.h" -PageSelectWeapon::PageSelectWeapon(QWidget* parent) : - AbstractPage(parent) +QLayout * PageSelectWeapon::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); pWeapons = new SelWeaponWidget(cAmmoNumber, this); - pageLayout->addWidget(pWeapons, 0, 0, 1, 5); - - - BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, 2, 1, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - + pageLayout->addWidget(pWeapons); - BtnDefault = addButton(tr("Default"), pageLayout, 1, 3); - BtnNew = addButton(tr("New"), pageLayout, 1, 2); - BtnCopy = addButton(tr("Copy"), pageLayout, 2, 2); - BtnDelete = addButton(tr("Delete"), pageLayout, 2, 3); - BtnSave = addButton(":/res/Save.png", pageLayout, 1, 4, 2, 1, true); - BtnSave->setStyleSheet("QPushButton{margin: 24px 0px 0px 0px;}"); - BtnBack->setFixedHeight(BtnSave->height()); - BtnBack->setStyleSheet("QPushButton{margin-top: 31px;}"); + return pageLayout; +} + +QLayout * PageSelectWeapon::footerLayoutDefinition() +{ + QGridLayout * bottomLayout = new QGridLayout(); selectWeaponSet = new QComboBox(this); - pageLayout->addWidget(selectWeaponSet, 1, 1, 2, 1); + bottomLayout->addWidget(selectWeaponSet, 0, 0, 2, 1); + + // first row + BtnNew = addButton(tr("New"), bottomLayout, 0, 1); + BtnDefault = addButton(tr("Default"), bottomLayout, 0, 2); + + // second row + BtnCopy = addButton(tr("Copy"), bottomLayout, 1, 1); + BtnDelete = addButton(tr("Delete"), bottomLayout, 1, 2); + bottomLayout->setColumnStretch(1,1); + bottomLayout->setColumnStretch(2,1); + + btnSave = addButton(":/res/Save.png", bottomLayout, 0, 3, 2, 1, true); + btnSave->setStyleSheet("QPushButton{margin: 24px 0 0 0;}"); + bottomLayout->setAlignment(btnSave, Qt::AlignRight | Qt::AlignBottom); + + return bottomLayout; +} + +void PageSelectWeapon::connectSignals() +{ connect(BtnDefault, SIGNAL(clicked()), pWeapons, SLOT(setDefault())); - connect(BtnSave, SIGNAL(clicked()), pWeapons, SLOT(save())); + connect(btnSave, SIGNAL(clicked()), pWeapons, SLOT(save())); connect(BtnNew, SIGNAL(clicked()), pWeapons, SLOT(newWeaponsName())); connect(BtnCopy, SIGNAL(clicked()), pWeapons, SLOT(copy())); connect(selectWeaponSet, SIGNAL(currentIndexChanged(const QString&)), pWeapons, SLOT(setWeaponsName(const QString&))); } + +PageSelectWeapon::PageSelectWeapon(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pageselectweapon.h --- a/QTfrontend/pageselectweapon.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pageselectweapon.h Tue Sep 27 00:38:39 2011 +0200 @@ -30,7 +30,7 @@ public: PageSelectWeapon(QWidget* parent = 0); - QPushButton *BtnSave; + QPushButton *btnSave; QPushButton *BtnDefault; QPushButton *BtnDelete; QPushButton *BtnNew; @@ -38,8 +38,10 @@ SelWeaponWidget* pWeapons; QComboBox* selectWeaponSet; -private: - QPushButton *BtnBack; +protected: + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagesingleplayer.cpp --- a/QTfrontend/pagesingleplayer.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagesingleplayer.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -22,18 +22,17 @@ #include "pagesingleplayer.h" #include "gamecfgwidget.h" -PageSinglePlayer::PageSinglePlayer(QWidget* parent) : AbstractPage(parent) +QLayout * PageSinglePlayer::bodyLayoutDefinition() { - QVBoxLayout * vLayout = new QVBoxLayout(this); + QVBoxLayout * vLayout = new QVBoxLayout(); + QHBoxLayout * topLine = new QHBoxLayout(); QHBoxLayout * middleLine = new QHBoxLayout(); - QHBoxLayout * bottomLine = new QHBoxLayout(); vLayout->addStretch(); vLayout->addLayout(topLine); vLayout->addSpacing(30); vLayout->addLayout(middleLine); vLayout->addStretch(); - vLayout->addLayout(bottomLine); topLine->addStretch(); BtnSimpleGamePage = addButton(":/res/SimpleGame.png", topLine, 0, true); @@ -51,18 +50,34 @@ BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 1, true); BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT")); + return vLayout; +} - BtnBack = addButton(":/res/Exit.png", bottomLine, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); - - +QLayout * PageSinglePlayer::footerLayoutDefinition() +{ + QHBoxLayout * bottomLine = new QHBoxLayout(); bottomLine->addStretch(); BtnDemos = addButton(":/res/Record.png", bottomLine, 1, true); BtnDemos->setToolTip(tr("Demos (Watch recorded demos)")); - BtnLoad = addButton(":/res/Save.png", bottomLine, 2, true); - BtnLoad->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}"); + BtnLoad = addButton(":/res/Load.png", bottomLine, 2, true); + BtnLoad->setStyleSheet("QPushButton{margin: 24px 0 0 0;}"); BtnLoad->setToolTip(tr("Load (Load a previously saved game)")); - BtnBack->setFixedHeight(BtnLoad->height()); - BtnBack->setStyleSheet("QPushButton{margin-top: 31px;}"); + + bottomLine->setStretch(1,0); + bottomLine->setStretch(2,0); + bottomLine->setAlignment(BtnDemos, Qt::AlignRight | Qt::AlignBottom); + bottomLine->setAlignment(BtnLoad, Qt::AlignRight | Qt::AlignBottom); + + return bottomLine; } + +void PageSinglePlayer::connectSignals() +{ + //TODO +} + +PageSinglePlayer::PageSinglePlayer(QWidget* parent) : AbstractPage(parent) +{ + initPage(); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagesingleplayer.h --- a/QTfrontend/pagesingleplayer.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagesingleplayer.h Tue Sep 27 00:38:39 2011 +0200 @@ -39,7 +39,9 @@ GameCFGWidget *gameCFG; private: - QPushButton *BtnBack; + QLayout * bodyLayoutDefinition(); + QLayout * footerLayoutDefinition(); + void connectSignals(); }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagetraining.cpp --- a/QTfrontend/pagetraining.cpp Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagetraining.cpp Tue Sep 27 00:38:39 2011 +0200 @@ -23,9 +23,10 @@ #include "pagetraining.h" #include "hwconsts.h" -PageTraining::PageTraining(QWidget* parent) : AbstractPage(parent) +QLayout * PageTraining::bodyLayoutDefinition() { - QGridLayout * pageLayout = new QGridLayout(this); + QGridLayout * pageLayout = new QGridLayout(); + pageLayout->setColumnStretch(0, 1); pageLayout->setColumnStretch(1, 2); pageLayout->setColumnStretch(2, 1); @@ -34,28 +35,6 @@ CBSelect = new QComboBox(this); - QDir tmpdir; - tmpdir.cd(cfgdir->absolutePath()); - tmpdir.cd("Data/Missions/Training"); - tmpdir.setFilter(QDir::Files); - QStringList userlist = tmpdir.entryList(QStringList("*.lua")).replaceInStrings(QRegExp("^(.*)\\.lua"), "\\1"); - CBSelect->addItems(userlist); - - tmpdir.cd(datadir->absolutePath()); - tmpdir.cd("Missions/Training"); - tmpdir.setFilter(QDir::Files); - QStringList tmplist = tmpdir.entryList(QStringList("*.lua")).replaceInStrings(QRegExp("^(.*)\\.lua"), "\\1"); - QStringList datalist; - for (QStringList::Iterator it = tmplist.begin(); it != tmplist.end(); ++it) - if (!userlist.contains(*it,Qt::CaseInsensitive)) datalist.append(*it); - CBSelect->addItems(datalist); - - for(int i = 0; i < CBSelect->count(); i++) - { - CBSelect->setItemData(i, CBSelect->itemText(i)); - CBSelect->setItemText(i, CBSelect->itemText(i).replace("_", " ")); - } - pageLayout->addWidget(CBSelect, 1, 1); BtnStartTrain = new QPushButton(this); @@ -63,7 +42,49 @@ BtnStartTrain->setText(QPushButton::tr("Go!")); pageLayout->addWidget(BtnStartTrain, 1, 2); + return pageLayout; +} - BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true); - connect(BtnBack, SIGNAL(clicked()), this, SIGNAL(goBack())); +void PageTraining::connectSignals() +{ + //TODO } + +PageTraining::PageTraining(QWidget* parent) : AbstractPage(parent) +{ + initPage(); + + QDir tmpdir; + tmpdir.cd(cfgdir->absolutePath()); + tmpdir.cd("Data/Missions/Training"); + QStringList userlist = scriptList(tmpdir); + + tmpdir.cd(datadir->absolutePath()); + tmpdir.cd("Missions/Training"); + QStringList defaultlist = scriptList(tmpdir); + + CBSelect->addItems(userlist); + + // add only default scripts that have names different from detected user scripts + foreach (const QString & line, defaultlist) + { + if (!userlist.contains(line,Qt::CaseInsensitive)) CBSelect->addItem(line); + } + + // replace underscores with spaces in the displayed that + for(int i = 0; i < CBSelect->count(); i++) + { + QString text = CBSelect->itemText(i); + CBSelect->setItemData(i, text); + CBSelect->setItemText(i, text.replace("_", " ")); +// if (userlist.contains(text)) +// CBSelect->setItemText(i, text + " (" + AbstractPage::tr("custom") + ")"); + } +} + +QStringList PageTraining::scriptList(const QDir & scriptDir) const +{ + QDir dir = scriptDir; + dir.setFilter(QDir::Files); + return dir.entryList(QStringList("*.lua")).replaceInStrings(QRegExp("^(.*)\\.lua"), "\\1"); +} diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/pagetraining.h --- a/QTfrontend/pagetraining.h Mon Sep 26 21:45:33 2011 +0400 +++ b/QTfrontend/pagetraining.h Tue Sep 27 00:38:39 2011 +0200 @@ -19,6 +19,8 @@ #ifndef PAGE_TRAINING_H #define PAGE_TRAINING_H +#include + #include "AbstractPage.h" class PageTraining : public AbstractPage @@ -31,8 +33,12 @@ QPushButton *BtnStartTrain; QComboBox *CBSelect; +protected: + QLayout * bodyLayoutDefinition(); + void connectSignals(); + private: - QPushButton *BtnBack; + QStringList scriptList(const QDir & scriptDir) const; }; #endif diff -r a740069c21e3 -r 8b5345758f62 QTfrontend/res/Load.png Binary file QTfrontend/res/Load.png has changed