From atlantik-devel Mon Jun 10 04:08:08 2002 From: kde () office ! kde ! org Date: Mon, 10 Jun 2002 04:08:08 +0000 To: atlantik-devel Subject: [atlantik-devel] CVS: kdeaddons/atlantikdesigner/designer boardinfo.cpp,1.2,1.3 boardinfo.h,1.1,1.2 X-MARC-Message: https://marc.info/?l=atlantik-devel&m=102368214923977 Update of /home/kde/kdeaddons/atlantikdesigner/designer In directory office:/tmp/cvs-serv11265/designer Modified Files: boardinfo.cpp boardinfo.h designer.cpp designer.h editor.cpp editor.h group.cpp group.h Log Message: make load/save work and fix bugs Index: boardinfo.cpp =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/boardinfo.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- boardinfo.cpp 2002/04/20 12:51:37 1.2 +++ boardinfo.cpp 2002/06/10 04:08:05 1.3 @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -15,7 +16,7 @@ #include "boardinfo.h" BoardInfoDlg::BoardInfoDlg(bool editable, BoardInfo *info, QWidget *parent, char *_name, bool modal) - : KDialogBase(KDialogBase::Tabbed, i18n("Gameboard Information"), (editable? Ok|Cancel : Close), (editable? Ok : Close), parent, _name, modal) + : KDialogBase(KDialogBase::Tabbed, i18n("Gameboard Information"), (editable? Ok|Apply|Cancel : Close), (editable? Ok : Close), parent, _name, modal) { if (!info) return; @@ -63,6 +64,16 @@ description->setReadOnly(true); } + if (editable) + { + QHBoxLayout *bgLayout = new QHBoxLayout(aboutLayout, spacingHint()); + bgLayout->addWidget(new QLabel(i18n("Background Color"), about)); + bgColor = new KColorButton(info->bgColor, about); + bgLayout->addWidget(bgColor); + } + else + bgColor = 0; + QFrame *authorsFrame = addPage(i18n("&Authors")); QVBoxLayout *authorsLayout = new QVBoxLayout(authorsFrame, spacingHint()); authorsLayout->addWidget(authors = new LotsaEdits(editable, info->authors, authorsFrame)); @@ -72,7 +83,7 @@ creditsLayout->addWidget(credits = new LotsaEdits(editable, info->credits, creditsFrame)); } -void BoardInfoDlg::slotOk() +void BoardInfoDlg::slotApply() { info->name = name->text(); info->description = description->text(); @@ -80,6 +91,17 @@ info->url = url->text(); info->authors = authors->save(); info->credits = credits->save(); + + if (bgColor) + info->bgColor = bgColor->color().name(); + + emit okClicked(); + KDialogBase::slotApply(); +} + +void BoardInfoDlg::slotOk() +{ + slotApply(); KDialogBase::slotOk(); } Index: boardinfo.h =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/boardinfo.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- boardinfo.h 2001/12/24 03:04:48 1.1 +++ boardinfo.h 2002/06/10 04:08:05 1.2 @@ -1,24 +1,30 @@ #ifndef ATLANTIK_BOARDINFO_H #define ATLANTIK_BOARDINFO_H +#include #include #include #include #include + #include +class KColorButton; class KLineEdit; class KURLLabel; + class QVBoxLayout; struct BoardInfo { + BoardInfo() { bgColor = Qt::lightGray; } QString name; QStringList authors; QStringList credits; QString description; QString url; QString version; + QColor bgColor; }; class LotsaEdits : public QWidget @@ -50,12 +56,14 @@ protected slots: void slotOk(); + void slotApply(); private: KLineEdit *name; KLineEdit *url; KLineEdit *version; KLineEdit *description; + KColorButton *bgColor; LotsaEdits *authors; LotsaEdits *credits; Index: designer.cpp =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/designer.cpp,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- designer.cpp 2002/06/09 07:18:46 1.36 +++ designer.cpp 2002/06/10 04:08:05 1.37 @@ -69,15 +69,19 @@ createGUI("atlantikdesignerui.rc"); + KConfig *config = kapp->config(); + config->setGroup("General"); + defaultBg = config->readColorEntry("alternateBackground", &black); + config->setGroup("WM"); + defaultFg = config->readColorEntry("activeBackground", &black); + // these MUST match up to the ones in editor.cpp! types.append("street"); - types.append("utility"); types.append("cards"); types.append("freeparking"); types.append("tojail"); types.append("tax"); types.append("jail"); - types.append("TODO"); isMod = false; openNew(); @@ -97,8 +101,18 @@ { estates.clear(); cards.clear(); + groups.clear(); boardInfo = BoardInfo(); + + for (ConfigEstateGroupList::Iterator it = groups.begin(); it != groups.end(); ++it) + if ((*it).name() == i18n("Default")) + return; + + ConfigEstateGroup defaultGroup(i18n("Default")); + defaultGroup.setBgColor(defaultBg); + defaultGroup.setFgColor(defaultFg); + groups.append(defaultGroup); } void AtlanticDesigner::initBoard() @@ -117,6 +131,7 @@ setCentralWidget(board); layout = new QVBoxLayout(board->centerWidget()); editor = new EstateEdit(&groups, &estates, &cards, board->centerWidget(), "Estate Editor"); + connect(editor, SIGNAL(updateBackground()), this, SLOT(updateBackground())); layout->addWidget(editor); editor->setReady(false); @@ -133,6 +148,7 @@ max = 40; + initMembers(); initBoard(); for(int i = 0; i < 40; ++i) @@ -140,30 +156,24 @@ (void) newEstate(i); } - isMod = false; doCaption(false); updateJumpMenu(); + groupsChanged(); + updateBackground(); + + isMod = false; QTimer::singleShot(500, this, SLOT(setPlayerAtBeginning())); } ConfigEstate *AtlanticDesigner::newEstate(int i) { - KConfig *config = kapp->config(); - QColor fg, bg; - config->setGroup("General"); - bg = config->readColorEntry("alternateBackground", &black); - config->setGroup("WM"); - fg = config->readColorEntry("activeBackground", &black); ConfigEstate *estate = new ConfigEstate(i); estate->setName(i18n("New Estate")); - estate->setColor(fg); - estate->setBgColor(bg); estate->setPrice(100); for (int j = 0; j < 6; ++j) estate->setRent(j, 10 * (j + 1)); estate->setChanged(false); - //estates.append(estate); estates.insert(i, estate); connect(estate, SIGNAL(LMBClicked(Estate *)), this, SLOT(changeEstate(Estate *))); @@ -222,7 +232,7 @@ void AtlanticDesigner::openFile(const QString &filename) { - enum ParseMode { General, Board, Estates, Cards, Other, Meta }; + enum ParseMode { Parse_Nothing, Parse_General, Parse_Cards, Parse_EstateGroups, Parse_Estates }; QFile f(filename); if (!f.open(IO_ReadOnly)) return; @@ -231,18 +241,18 @@ QTextStream t(&f); QString s = t.readLine(); - ParseMode parseMode = Other; + int parseMode = Parse_Nothing; + CardStack *curCardStack = 0; + + int goEstate = 0; int i; for (i = 0; !t.atEnd();) { - //if (i < 500) - //kdDebug() << "s is [" << s << "]" << endl; s = s.stripWhiteSpace(); if (s.isEmpty()) { - //kdDebug() << "thats empty, reading new line" << endl; s = t.readLine(); continue; } @@ -252,132 +262,134 @@ if (s.left(1) == "<") { //kdDebug() << "setting parsemode for s [" << s << "]" << endl; - if (s == "") - parseMode = Estates; + if (s == "") + parseMode = Parse_General; + else if (s == "") + parseMode = Parse_EstateGroups; else if (s == "") - parseMode = Cards; - else if (s == "") - parseMode = Meta; - else - parseMode = Other; + parseMode = Parse_Cards; + else if (s == "") + parseMode = Parse_Estates; s = t.readLine(); continue; } + // this for outside-of-[]-settings + int eqSign = s.find("="); + if (eqSign >= 0) + { + QString key = s.left(eqSign); + QString value = s.right(s.length() - eqSign - 1); + + if (parseMode == Parse_Cards) + { + if (key == "groupname") + { + cards.append(CardStack(value)); + curCardStack = &cards.last(); + } + } + + s = t.readLine(); + continue; + } + name = s.left(s.find("]")); name = name.right(name.length() - name.find("[") - 1); if (name.isEmpty()) name = i18n("No Name"); - //kdDebug() << "name is " << name << endl; - //// for estates - QColor color = QColor("zzzzzz"), bgColor = QColor("zzzzzz"); - int type = 0; - int group = -1; + // for estates + int type = FreeParking; + QString group, takeCard; int price = -1; int rent[6] = {-1, -1, -1, -1, -1, -1}; int tax = -1; int taxPercentage = -1; - //// for cards + + // for groups + QColor color, bgColor; + QString rentMath, rentVar; + int housePrice = -1; + int globalPrice = -1; + + // for cards QStringList keys; QValueList values; - CardStack *curCardStack = 0; - while (true) { if (t.atEnd()) break; - s = t.readLine().stripWhiteSpace(); - //kdDebug() << "s is " << s << endl; + s = t.readLine().stripWhiteSpace(); if (s.left(1) == "[" || s.left(1) == "<") - { - //kdDebug() << "breaking\n"; break; - } int eqSign = s.find("="); - if (eqSign == -1) - { + if (eqSign < 0) continue; - } QString key = s.left(eqSign); QString value = s.right(s.length() - eqSign - 1); //////////////////////////////// ESTATES - if (parseMode == Estates) + if (parseMode == Parse_Estates) { - if (key == "type") - { - //kdDebug() << "its a type!\n"; - int j = 0; - for (QStringList::Iterator it = types.begin(); it != types.end(); ++it) - { - //kdDebug() << (*it) << ", " << value << endl; - if ((*it) == value) - { - type = j; - break; - } - j++; - } - //kdDebug() << "type is " << type << endl; - } - else if (key == "price") - { + if (key == "price") price = value.toInt(); - } else if (key.left(4) == "rent") { int houses = key.right(1).toInt(); if (houses < 0 || houses > 5) - { continue; - } + rent[houses] = value.toInt(); } else if (key == "tax") { tax = value.toInt(); + type = Tax; } else if (key == "taxpercentage") - { taxPercentage = value.toInt(); - } else if (key == "group") { - group = value.toInt(); + group = value; + type = Street; } - else if (key == "color") + else if (key == "tojail") + type = ToJail; + else if (key == "jail") + type = Jail; + else if (key == "freeparking") + type = FreeParking; + else if (key == "takecard") { - color.setNamedColor(value); - //kdDebug() << "color is " << color.name() << endl; + takeCard = value; + type = Cards; } + } + else if (parseMode == Parse_EstateGroups) + { + if (key == "color") + color.setNamedColor(value); else if (key == "bgcolor") - { bgColor.setNamedColor(value); - //kdDebug() << "bgcolor is " << bgColor.name() << endl; - } - } ///////////////////////////// END ESTATES - - ///////////////////////////// CARDS - else if (parseMode == Cards) + else if (key == "houseprice") + housePrice = value.toInt(); + else if (key == "price") + globalPrice = value.toInt(); + else if (key == "rentmath") + rentMath = value; + else if (key == "rentvar") + rentVar = value; + } + else if (parseMode == Parse_Cards) { - //kdDebug() << "in card area\n"; - - if (key == "groupname") - for (QValueList::Iterator it = cards.begin(); it != cards.end(); ++it) - if ((*it).name() == value) - { - curCardStack = &(*it); - continue; - } - bool ok; int v = value.toInt(&ok); if (!ok) @@ -388,12 +400,12 @@ v *= -1; key = "collect"; } - if (key == "payeach" && v < 0) + else if (key == "payeach" && v < 0) { v *= -1; key = "collecteach"; } - if (key == "advance" && v < 0) + else if (key == "advance" && v < 0) { v *= -1; key = "goback"; @@ -403,12 +415,14 @@ keys.append(key); values.append(v); } - else if (parseMode == Meta) + else if (parseMode == Parse_General) { - if (name == "About") + if (name == "Meta") { if (key == "name") + { boardInfo.name = value; + } else if (key == "description") boardInfo.description = value; else if (key == "version") @@ -420,45 +434,58 @@ else if (key == "credits") boardInfo.credits = QStringList::split(",", value); } + else if (name == "Board") + { + if (key == "go") + goEstate = value.toInt(); + else if (key == "bgcolor") + boardInfo.bgColor.setNamedColor(value); + } } - //else - //kdDebug() << "ignoring line, unknown parseMode" << endl; } - if (parseMode == Estates) + if (parseMode == Parse_Estates) { - //kdDebug() << "making estate (" << i << ")\n"; ConfigEstate *estate = new ConfigEstate(i); estate->setName(name); - estate->setColor(color); - estate->setBgColor(bgColor); estate->setType(type); + if (!group.isEmpty()) + estate->setGroup(group); + estate->setTakeCard(takeCard); estate->setPrice(price); for (int j = 0; j < 6; j++) estate->setRent(j, rent[j]); estate->setTax(tax); estate->setTaxPercentage(taxPercentage); - estate->setChanged(false); estates.append(estate); connect(estate, SIGNAL(LMBClicked(Estate *)), this, SLOT(changeEstate(Estate *))); connect(estate, SIGNAL(changed()), this, SLOT(modified())); - - //kdDebug() << "incrementing i\n"; i++; } - else if (parseMode == Cards) + else if (parseMode == Parse_Cards) { - //kdDebug() << "making new card" << endl; Card card; card.name = name; card.keys = keys; card.values = values; - curCardStack->append(card); + if (curCardStack) + curCardStack->append(card); } + else if (parseMode == Parse_EstateGroups) + { + ConfigEstateGroup group(name); + group.setHousePrice(housePrice); + group.setGlobalPrice(globalPrice); + group.setFgColor(color); + group.setBgColor(bgColor); + group.setRentMath(rentMath); + group.setRentVar(rentVar); + groups.append(group); + } } - if (i < 4) + if (i < 8) { KMessageBox::detailedSorry(this, i18n("This board file is invalid; cannot open."), i18n("There are only %1 estates specified in this file.").arg(i)); if (this->filename.isNull()) @@ -470,14 +497,17 @@ initBoard(); ConfigEstate *estate = 0; for (estate = estates.first(); estate; estate = estates.next()) - { board->addEstateView(estate); - } - isMod = false; + if (goEstate > 0 && goEstate < max) + estates.at(goEstate - 1)->setGo(true); + + groupsChanged(); + updateBackground(); doCaption(false); updateJumpMenu(); - //kdDebug() << "ending openFile\n"; + + isMod = false; QTimer::singleShot(500, this, SLOT(setPlayerAtBeginning())); } @@ -496,17 +526,31 @@ // our superstar! m_player = new Player; board->addToken(m_player); - movePlayer(estates.first()); - editor->setEstate(estates.first()); + + ConfigEstate *go = 0; + for (go = estates.first(); go; go = estates.next()) + if (go->go()) + break; + + if (!go) + go = estates.first(); + + movePlayer(go); + editor->setEstate(go); } void AtlanticDesigner::saveAs() { QString oldfilename = filename; filename = QString::null; + save(); + if (filename.isNull()) + { filename = oldfilename; + return; + } else recentAct->addURL(QString("file:") + filename); } @@ -525,67 +569,45 @@ return; } - //QStringList allNames; - QFile f(filename); if (!f.open(IO_WriteOnly)) return; QTextStream t(&f); - t << QString("") << endl << endl; + t << "" << endl << endl; + t << "[Board]" << endl; ConfigEstate *estate = 0; for (estate = estates.first(); estate; estate = estates.next()) { - /* - if (!allNames.grep(estate->name()).empty()) + if (estate->go()) { - KMessageBox::detailedSorry(this, i18n("There are duplicate names on your gameboard. Thus, it can not be saved correctly; aborting."), i18n("%1 (number %1) has a duplicate name.").arg(estate->name()).arg(estate->estateId())); - return; + t << "go=" << estate->estateId() + 1 << endl; + break; } - */ - - EstateType type = (EstateType)estate->type(); - - t << QString("[%1]").arg(estate->name()) << endl; - - if (estate->price() >= 0 && type == Street) - t << "price=" << estate->price() << endl; - if (estate->tax() >= 0 && type == Tax) - t << "tax=" << estate->tax() << endl; - if (estate->taxPercentage() >= 0 && type == Tax) - t << "taxpercentage=" << estate->taxPercentage() << endl; + } - if (type == Street) - for (int i = 0; i < 6; i++) - if (estate->rent(i) >= 0) - t << "rent" << i << "=" << estate->rent(i) << endl; + t << "bgcolor=" << boardInfo.bgColor.name() << endl; + t << endl; - t << endl; + t << QString("[Meta]\nname=%2\ndescription=%3\nurl=%4\nversion=%5\nauthors=%6\ncredits=%7\n").arg(boardInfo.name).arg(boardInfo.description).arg(boardInfo.url).arg(boardInfo.version).arg(boardInfo.authors.join(",")).arg(boardInfo.credits.join(",")); - //allNames.append(estate->name()); - } + t << endl << endl; // now do the cards t << "" << endl << endl; - CardStack *stack = 0; for (QValueList::Iterator it = cards.begin(); it != cards.end(); ++it) { - stack = &(*it); - - t << "groupname=" << stack->name() << endl << endl; + t << "groupname=" << (*it).name() << endl; - Card *card = 0; - for (CardStack::Iterator cit = stack->begin(); cit != stack->end(); ++cit) + for (CardStack::Iterator cit = (*it).begin(); cit != (*it).end(); ++cit) { - card = &(*cit); - - t << endl << "[" << card->name << "]" << endl; - QValueList::Iterator vit = card->values.begin(); - for (QStringList::Iterator it = card->keys.begin(); it != card->keys.end(); ++it, ++vit) + t << endl << "[" << (*cit).name << "]" << endl; + QValueList::Iterator vit = (*cit).values.begin(); + for (QStringList::Iterator it = (*cit).keys.begin(); it != (*cit).keys.end(); ++it, ++vit) { QString key = (*it); int value = (*vit); @@ -614,10 +636,90 @@ } } - // now save information - t << endl << endl; - t << QString("\n[About]\nname=%2\ndescription=%3\nurl=%4\nversion=%5\nauthors=%6\ncredits=%7\n").arg(boardInfo.name).arg(boardInfo.description).arg(boardInfo.url).arg(boardInfo.version).arg(boardInfo.authors.join(",")).arg(boardInfo.credits.join(",")); + t << endl; + + t << "" << endl; + + for (ConfigEstateGroupList::Iterator it = groups.begin(); it != groups.end(); ++it) + { + if ((*it).name() == i18n("Default")) + continue; + + t << endl << QString("[%1]").arg((*it).name()) << endl; + if ((*it).housePrice() > 0) + t << "houseprice=" << (*it).housePrice() << endl; + if ((*it).globalPrice() > 0) + t << "price=" << (*it).globalPrice() << endl; + + if ((*it).fgColor().isValid()) + t << "color=" << (*it).fgColor().name() << endl; + + t << "bgcolor=" << (*it).bgColor().name() << endl; + + if (!(*it).rentMath().isEmpty()) + t << "rentmath=" << (*it).rentMath() << endl; + if (!(*it).rentVar().isEmpty()) + t << "rentvar=" << (*it).rentVar() << endl; + } + + t << endl; + + t << "" << endl; + + for (estate = estates.first(); estate; estate = estates.next()) + { + /* + if (!allNames.grep(estate->name()).empty()) + { + KMessageBox::detailedSorry(this, i18n("There are duplicate names on your gameboard. Thus, it can not be saved correctly; aborting."), i18n("%1 (number %1) has a duplicate name.").arg(estate->name()).arg(estate->estateId())); + return; + } + */ + + t << endl << QString("[%1]").arg(estate->name()) << endl; + + switch (estate->type()) + { + case Street: + if (!estate->group().isNull() && estate->group() != i18n("Default")) + t << "group=" << estate->group() << endl; + t << "price=" << estate->price() << endl; + + for (int i = 0; i < 6; i++) + { + if (estate->rent(i) > 0) + t << "rent" << i << "=" << estate->rent(i) << endl; + } + break; + + case Tax: + t << "tax=" << estate->tax() << endl; + t << "taxpercentage=" << estate->taxPercentage() << endl; + break; + + case Jail: + t << "jail=1" << endl; + break; + + case ToJail: + t << "tojail=1" << endl; + break; + + case Cards: + t << "takecard=" << estate->takeCard() << endl; + break; + + case FreeParking: + t << "freeparking=1" << endl; + break; + } + + t << endl; + + //allNames.append(estate->name()); + } + f.flush(); isMod = false; doCaption(false); @@ -711,6 +813,8 @@ isMod = true; updateJumpMenu(); + groupsChanged(); + updateBackground(); QTimer::singleShot(500, this, SLOT(setPlayerAtBeginning())); } @@ -750,6 +854,8 @@ isMod = true; updateJumpMenu(); + groupsChanged(); + updateBackground(); QTimer::singleShot(500, this, SLOT(setPlayerAtBeginning())); } @@ -784,15 +890,11 @@ ConfigEstate *curEstate = 0; for (curEstate = estates.first(); curEstate; curEstate = estates.next()) { - // skip estate currently being edited - if (curEstate == editor->theEstate()) - continue; - for (ConfigEstateGroupList::Iterator it = groups.begin(); it != groups.end(); ++it) { - if ((*it).name() == curEstate->group()) + if ((*it).name() == curEstate->group() && curEstate->type() == Street) { - curEstate->setBgColor((*it).bgColor()); + curEstate->setBgColor((*it).bgColor().isValid()? (*it).bgColor() : boardInfo.bgColor); curEstate->setColor((*it).fgColor()); curEstate->update(); break; @@ -801,9 +903,25 @@ } } +void AtlanticDesigner::updateBackground() +{ + ConfigEstate *curEstate = 0; + for (curEstate = estates.first(); curEstate; curEstate = estates.next()) + { + if (curEstate->type() != Street || (curEstate->type() == Street && curEstate->group().isNull())) + { + curEstate->setColor(QColor()); + curEstate->setBgColor(boardInfo.bgColor); + curEstate->update(); + } + } +} + void AtlanticDesigner::info() { - (new BoardInfoDlg(true, &boardInfo, this))->show(); + BoardInfoDlg *dlg = new BoardInfoDlg(true, &boardInfo, this); + connect(dlg, SIGNAL(okClicked()), this, SLOT(updateBackground())); + dlg->show(); } // now some fun functions ;) Index: designer.h =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/designer.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- designer.h 2002/06/09 07:18:46 1.14 +++ designer.h 2002/06/10 04:08:05 1.15 @@ -1,12 +1,14 @@ #ifndef ATLANTK_DESIGNER_H #define ATLANTK_DESIGNER_H -#include -#include +#include +#include #include +#include #include -#include +#include + #include "boardinfo.h" #include "group.h" #include "editor.h" @@ -49,6 +51,7 @@ void info(); void editGroups(); void groupsChanged(); + void updateBackground(); void up(); void down(); @@ -92,6 +95,9 @@ Player *m_player; bool isMod; + + QColor defaultFg; + QColor defaultBg; }; #endif Index: editor.cpp =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/editor.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- editor.cpp 2002/06/09 07:18:46 1.23 +++ editor.cpp 2002/06/10 04:08:05 1.24 @@ -28,7 +28,9 @@ ConfigEstate::ConfigEstate(int estateId) : Estate(estateId) { m_rent[0] = m_rent[1] = m_rent[2] = m_rent[3] = m_rent[4] = m_rent[5] = 0; - m_type = 0; + m_type = m_price = m_tax = m_taxPercentage = 0; + m_go = false; + m_group = i18n("Default"); } void ConfigEstate::setChanged(bool b) @@ -108,24 +110,6 @@ } } -void ConfigEstate::setRentMath(const QString &rentMath) -{ - if (m_rentMath != rentMath) - { - m_rentMath = rentMath; - m_changed = true; - } -} - -void ConfigEstate::setRentVar(const QString &rentVar) -{ - if (m_rentVar != rentVar) - { - m_rentVar = rentVar; - m_changed = true; - } -} - void ConfigEstate::setGo(const bool go) { if (m_go != go) @@ -184,19 +168,18 @@ typeCombo = new KComboBox(false, this, "Type Combo"); typeLayout->addWidget(typeCombo); connect(typeCombo, SIGNAL(activated(int)), this, SIGNAL(somethingChanged())); + connect(typeCombo, SIGNAL(activated(int)), this, SIGNAL(updateBackground())); - goCheck = new QCheckBox(i18n("This estate is a Go"), this); + goCheck = new QCheckBox(i18n("This estate is Go"), this); connect(goCheck, SIGNAL(toggled(bool)), this, SIGNAL(somethingChanged())); layout->addWidget(goCheck, 4, 0); QStringList estateTypes(i18n("Street")); - estateTypes.append(i18n("Utility")); estateTypes.append(i18n("Cards")); estateTypes.append(i18n("Free Parking")); estateTypes.append(i18n("Go to jail")); estateTypes.append(i18n("Tax")); estateTypes.append(i18n("Jail")); - estateTypes.append("TODO"); typeCombo->insertStringList(estateTypes); } @@ -295,6 +278,8 @@ } confDlg->slotUpdate(estate); + + connect(confDlg, SIGNAL(updateBackground()), this, SIGNAL(updateBackground())); layout->addWidget(confDlg, 1, 0); confDlg->show(); @@ -440,7 +425,13 @@ void CardsDlg::update() { - cards->setCurrentText(estate->takeCard()); + if (!estate->takeCard().isNull()) + { + cards->setCurrentText(estate->takeCard()); + updateView(estate->takeCard()); + } + else + cards->setCurrentItem(-1); } ///////////////////////////////// @@ -595,6 +586,8 @@ List = new KListBox(this); layout->addWidget(List); connect(List, SIGNAL(highlighted(int)), this, SLOT(selected(int))); + + layout->setStretchFactor(List, 3); hlayout = new QHBoxLayout(layout); moreButton = new KPushButton(i18n("&More Properties"), this); Index: editor.h =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/editor.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- editor.h 2002/06/09 07:18:46 1.18 +++ editor.h 2002/06/10 04:08:05 1.19 @@ -19,7 +19,7 @@ class KListBox; class KPushButton; -enum EstateType { Street = 0, Utility, Cards, FreeParking, ToJail, Tax, Jail, Other }; +enum EstateType { Street = 0, Cards, FreeParking, ToJail, Tax, Jail }; class ConfigEstate : public Estate { @@ -40,10 +40,6 @@ void setTaxPercentage(const int); const QString &takeCard() { return m_takeCard; } void setTakeCard(const QString &); - const QString &rentMath() { return m_rentMath; } - void setRentMath(const QString &); - const QString &rentVar() { return m_rentVar; } - void setRentVar(const QString &); bool go() { return m_go; } void setGo(const bool); @@ -57,8 +53,6 @@ int m_tax; int m_taxPercentage; QString m_takeCard; - QString m_rentMath; - QString m_rentVar; bool m_go; }; typedef QPtrList EstateList; @@ -90,6 +84,9 @@ public: EstateDlg(QWidget *parent = 0, char *name = 0) : QWidget(parent, name) { estate = 0; }; + signals: + void updateBackground(); + public slots: virtual void slotOk() { save(); } void slotUpdate(ConfigEstate *newEstate) { estate = newEstate; if (estate) update(); } @@ -124,6 +121,7 @@ signals: void somethingChanged(); void modified(); + void updateBackground(); private slots: void configure(); Index: group.cpp =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/group.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- group.cpp 2002/06/09 07:18:46 1.2 +++ group.cpp 2002/06/10 04:08:05 1.3 @@ -1,3 +1,4 @@ +#include #include #include #include @@ -8,6 +9,7 @@ #include #include +#include #include #include #include @@ -52,15 +54,29 @@ pricesGroupBox = new QVGroupBox(i18n("&Prices"), page); vlayout->addWidget(pricesGroupBox); - QWidget *pricesDummy = new QWidget(pricesGroupBox); - QHBoxLayout *housePriceLayout = new QHBoxLayout(pricesDummy, spacingHint()); - housePriceLayout->addWidget(new QLabel(i18n("House price"), pricesDummy), 1, 0); - housePriceLayout->addWidget(housePrice = new QSpinBox(0, 3000, 25, pricesDummy)); + pricesWidget = new QWidget(pricesGroupBox); + QHBoxLayout *housePriceLayout = new QHBoxLayout(pricesWidget, 0, spacingHint()); + housePriceLayout->addWidget(new QLabel(i18n("House price"), pricesWidget), 1, 0); + housePriceLayout->addWidget(housePrice = new QSpinBox(0, 3000, 25, pricesWidget)); housePrice->setSuffix(i18n("$")); connect(housePrice, SIGNAL(valueChanged(int)), this, SLOT(housePriceChanged(int))); - //vlayout->addWidget(new KSeparator(page)); + mathWidget = new QWidget(pricesGroupBox); + QGridLayout *mathLayout = new QGridLayout(mathWidget, 2, 2, 0, spacingHint()); + mathLayout->addWidget(new QLabel(i18n("Rent variable"), mathWidget), 0, 0); + mathLayout->addWidget(new QLabel(i18n("Expression:"), mathWidget), 1, 0); + + rentVarCombo = new QComboBox(mathWidget); + QStringList vars; + vars << "ownedbyplayer"; + rentVarCombo->insertStringList(vars); + connect(rentVarCombo, SIGNAL(activated(const QString &)), this, SLOT(rentVarChanged(const QString &))); + mathLayout->addWidget(rentVarCombo, 0, 1); + rentMathEdit = new KLineEdit(mathWidget); + connect(rentMathEdit, SIGNAL(textChanged(const QString &)), this, SLOT(rentMathChanged(const QString &))); + mathLayout->addWidget(rentMathEdit, 1, 1); + QHBoxLayout *buttonlayout = new QHBoxLayout(vlayout, spacingHint()); removeB = new KPushButton(i18n("&Remove"), page); buttonlayout->addWidget(removeB); @@ -123,6 +139,9 @@ fgButton->setColor((*it).fgColor()); bgButton->setColor((*it).bgColor()); housePrice->setValue((*it).housePrice()); + rentMathEdit->setText((*it).rentMath()); + if (!(*it).rentVar().isNull()) + rentVarCombo->setCurrentText((*it).rentVar()); break; } } @@ -160,6 +179,20 @@ ConfigEstateGroup *group = currentGroup(); if (group) group->setHousePrice(newValue); +} + +void GroupEditor::rentVarChanged(const QString &newValue) +{ + ConfigEstateGroup *group = currentGroup(); + if (group) + group->setRentVar(newValue); +} + +void GroupEditor::rentMathChanged(const QString &newValue) +{ + ConfigEstateGroup *group = currentGroup(); + if (group) + group->setRentMath(newValue); } void GroupEditor::slotApply() Index: group.h =================================================================== RCS file: /home/kde/kdeaddons/atlantikdesigner/designer/group.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- group.h 2002/06/09 07:18:46 1.2 +++ group.h 2002/06/10 04:08:05 1.3 @@ -1,17 +1,19 @@ #ifndef GROUP_H #define GROUP_H -#include #include +#include #include #include class KColorButton; +class KLineEdit; class KListBox; class KPushButton; +class QComboBox; class QListBoxItem; class QSpinBox; class QVGroupBox; @@ -25,6 +27,13 @@ void setHousePrice(int newPrice) { m_housePrice = newPrice; } int housePrice() { return m_housePrice; } + void setGlobalPrice(int newGlobalPrice) { m_globalPrice = newGlobalPrice; } + int globalPrice() { return m_globalPrice; } + const QString &rentMath() { return m_rentMath; } + void setRentMath(const QString &newMath) { m_rentMath = newMath; } + const QString &rentVar() { return m_rentVar; } + void setRentVar(const QString &newVar) { m_rentVar = newVar; } + bool dynamicRent() { return !m_rentVar.isEmpty() || !m_rentMath.isEmpty(); } void setName(const QString &name) { m_name = name; } const QString &name() { return m_name; } @@ -36,7 +45,10 @@ private: QColor m_fgColor; QColor m_bgColor; + QString m_rentMath; + QString m_rentVar; int m_housePrice; + int m_globalPrice; QString m_name; }; typedef QValueList ConfigEstateGroupList; @@ -61,14 +73,20 @@ void fgChanged(const QColor &); void bgChanged(const QColor &); void housePriceChanged(int); + void rentVarChanged(const QString &); + void rentMathChanged(const QString &); void add(); void remove(); void selectionChanged(); private: KListBox *groups; + KLineEdit *rentMathEdit; + QComboBox *rentVarCombo; KColorButton *fgButton; KColorButton *bgButton; + QWidget *pricesWidget; + QWidget *mathWidget; QSpinBox *housePrice; QVGroupBox *colorGroupBox; QVGroupBox *pricesGroupBox; _______________________________________________ atlantik-devel mailing list atlantik-devel@mail.kde.org http://mail.kde.org/mailman/listinfo/atlantik-devel