You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
5.7 KiB
205 lines
5.7 KiB
/*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
|
|
// QT includes
|
|
#include <tqlabel.h>
|
|
#include <tqlineedit.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqcombobox.h>
|
|
#include <tqlayout.h>
|
|
|
|
// KDE includes
|
|
#include <klocale.h>
|
|
#include <knuminput.h>
|
|
#include <kapplication.h>
|
|
#include <kconfig.h>
|
|
#include <knumvalidator.h>
|
|
|
|
// own includes
|
|
#include "defines.h"
|
|
#include "newgamedlg.h"
|
|
|
|
|
|
NewGameDlg::NewGameDlg(TQWidget* tqparent)
|
|
: KDialogBase(Plain, i18n("New Game"),
|
|
Ok|Cancel, Ok, tqparent, 0, true, true)
|
|
{
|
|
TQVBoxLayout *topLayout = new TQVBoxLayout(plainPage(), spacingHint());
|
|
TQHBoxLayout *l = new TQHBoxLayout(topLayout);
|
|
|
|
KConfig* conf = kapp->config();
|
|
conf->setGroup("NewGameDlg");
|
|
bool showNewGameDlg = conf->readBoolEntry("showNewGameDlgOnStartup",
|
|
SHOWNEWGAME_DEFAULT);
|
|
bool readConfig = conf->readBoolEntry("readFromConfig",
|
|
LOADGAME_DEFAULT);
|
|
int playerNr = conf->readNumEntry("players", DEFAULT_PLAYERS);
|
|
int money = conf->readNumEntry("startMoney", START_MONEY);
|
|
|
|
readFromConfig = new TQCheckBox(i18n("Try loading a game"), plainPage());
|
|
readFromConfig->adjustSize();
|
|
readFromConfig->setChecked(readConfig);
|
|
l->addWidget(readFromConfig);
|
|
|
|
readFromConfigLabel = new TQLabel(i18n("The following values are used if loading from config fails"), plainPage());
|
|
if (!readFromConfig->isChecked())
|
|
readFromConfigLabel->hide();
|
|
readFromConfigLabel->adjustSize();
|
|
l->addWidget(readFromConfigLabel);
|
|
connect(readFromConfig, TQT_SIGNAL(toggled(bool)),
|
|
this, TQT_SLOT(changeReadFromConfig(bool)));
|
|
|
|
players = new KIntNumInput(playerNr, plainPage());
|
|
players->setRange(1, MAX_PLAYERS);
|
|
players->setLabel(i18n("How many players do you want?"));
|
|
topLayout->addWidget(players);
|
|
|
|
l = new TQHBoxLayout(topLayout);
|
|
l->addWidget(new TQLabel(i18n("Your name:"), plainPage()));
|
|
player1Name = new TQLineEdit(plainPage());
|
|
l->addWidget(player1Name);
|
|
|
|
l = new TQHBoxLayout(topLayout);
|
|
l->addWidget(new TQLabel(i18n("Players' starting money:"), plainPage()));
|
|
moneyOfPlayers = new TQLineEdit(TQString("%1").tqarg(money), plainPage());
|
|
moneyOfPlayers->setValidator( new KIntValidator( 0,999999,moneyOfPlayers ) );
|
|
|
|
l->addWidget(moneyOfPlayers);
|
|
|
|
l = new TQHBoxLayout(topLayout);
|
|
l->addWidget(new TQLabel(i18n("The names of your opponents:"), plainPage()));
|
|
computerNames = new TQComboBox(true, plainPage());
|
|
computerNames->setInsertionPolicy(TQComboBox::AtCurrent);
|
|
l->addWidget(computerNames);
|
|
|
|
l = new TQHBoxLayout(topLayout);
|
|
l->addWidget(new TQLabel(i18n("Show this dialog every time on startup"),
|
|
plainPage()));
|
|
showDialogOnStartup = new TQCheckBox(plainPage());
|
|
showDialogOnStartup->setChecked(showNewGameDlg);
|
|
l->addWidget(showDialogOnStartup);
|
|
|
|
setPlayerNames();
|
|
}
|
|
|
|
|
|
NewGameDlg::~NewGameDlg()
|
|
{
|
|
if (result() == Accepted) {
|
|
KConfig* conf = kapp->config();
|
|
conf->setGroup("NewGameDlg"); // defaults for the newGameDlg only
|
|
conf->writeEntry("showNewGameDlgOnStartup", showOnStartup());
|
|
conf->writeEntry("readFromConfig", readFromConfigFile()); // just a default!
|
|
conf->writeEntry("players", getPlayers());
|
|
conf->writeEntry("startMoney", money());
|
|
}
|
|
|
|
//delete the visible elements:
|
|
delete readFromConfigLabel;
|
|
delete readFromConfig;
|
|
delete players;
|
|
delete moneyOfPlayers;
|
|
delete showDialogOnStartup;
|
|
delete player1Name;
|
|
delete computerNames;
|
|
|
|
}
|
|
|
|
|
|
void NewGameDlg::setPlayerNames(int no, TQString playerName)
|
|
{
|
|
if (no < 0) {
|
|
kapp->config()->setGroup("Save");
|
|
player1Name->setText(kapp->config()->readEntry("Name_0", i18n("You")));
|
|
computerNames->clear();
|
|
for (int i = 1; i < MAX_PLAYERS; i++) {
|
|
computerNames->insertItem(kapp->config()->readEntry(TQString("Name_%1").tqarg(i), i18n("Computer %1").tqarg(i)));
|
|
}
|
|
} else if (no == 0) {
|
|
player1Name->setText(playerName);
|
|
} else {
|
|
if (computerNames->count() > no)
|
|
computerNames->insertItem(playerName, no-1);
|
|
else
|
|
computerNames->changeItem(playerName, no-1);
|
|
}
|
|
}
|
|
|
|
|
|
void NewGameDlg::changeReadFromConfig(bool show)
|
|
{
|
|
if (show)
|
|
readFromConfigLabel->show();
|
|
else
|
|
readFromConfigLabel->hide();
|
|
}
|
|
|
|
|
|
bool NewGameDlg::showOnStartup()
|
|
{
|
|
return showDialogOnStartup->isChecked();
|
|
}
|
|
|
|
|
|
int NewGameDlg::getPlayers()
|
|
{
|
|
return players->value();
|
|
}
|
|
|
|
|
|
bool NewGameDlg::readFromConfigFile()
|
|
{
|
|
return readFromConfig->isChecked();
|
|
}
|
|
|
|
|
|
int NewGameDlg::money()
|
|
{
|
|
bool ok = true;
|
|
int money = moneyOfPlayers->text().toInt(&ok);
|
|
if (ok)
|
|
return money;
|
|
else
|
|
return START_MONEY;
|
|
}
|
|
|
|
|
|
TQString NewGameDlg::name(int nr)
|
|
{
|
|
if (computerNames->currentText() != computerNames->text(computerNames->currentItem()))
|
|
computerNames->changeItem(computerNames->currentText(), computerNames->currentItem());
|
|
|
|
if (nr == 0)
|
|
return player1Name->text();
|
|
|
|
if (nr <= computerNames->count())
|
|
return computerNames->text(nr-1);
|
|
|
|
return i18n("Player");
|
|
}
|
|
|
|
|
|
void NewGameDlg::hideReadingFromConfig()
|
|
{
|
|
readFromConfig->hide();
|
|
readFromConfigLabel->hide();
|
|
readFromConfig->setChecked(false);
|
|
}
|
|
|
|
|
|
#include "newgamedlg.moc"
|