diff --git a/src/divisioncapitalasker.cpp b/src/divisioncapitalasker.cpp index 435d291..af14d15 100644 --- a/src/divisioncapitalasker.cpp +++ b/src/divisioncapitalasker.cpp @@ -1,81 +1,81 @@ /*************************************************************************** * Copyright (C) 2004 by Albert Astals Cid * * aacid@kde.org * * * * 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. * ***************************************************************************/ #include "divisioncapitalasker.h" #include #include #include #include "map.h" divisionCapitalAsker::divisionCapitalAsker(QWidget *parent, KGmap *m, QWidget *w, uint count) : boxAsker(parent, m, w, count) { init(); } bool divisionCapitalAsker::nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer) { bool b; if (isAnswer) { const QString divisionName = p_map -> getDivision(division) -> getName(); - setQuestion(i18nc("@title:group", p_map->getDivisionToCapitalQuestionPattern().toUtf8(), divisionName)); + setQuestion(p_map->getDivisionToCapitalQuestionPattern().subs(divisionName).toString()); p_currentAnswer.setQuestion(i18nc("@item:intable column Question, %1 is region name", "%1", divisionName)); p_capital = p_map -> getDivisionCapital(division); p_currentAnswer.setCorrectAnswer(i18nc("@option:radio The capital of is...", "%1", p_capital)); p_radioButtons[i] -> setText(i18nc("@option:radio The capital of is...", "%1", p_capital)); b = true; QStringList falseCapitals = p_map -> getDivisionFalseCapitals(division); int index = 0; while (!falseCapitals.isEmpty() && index < 4) { if (index != i) { int random = (int)((float)falseCapitals.size() * KRandom::random() / (RAND_MAX + 1.0)); QString falseCapital = falseCapitals.at(random); falseCapitals.removeAt(random); p_radioButtons[index] -> setText(i18nc("@option:radio The capital of is...", "%1", falseCapital)); } ++index; } } else { QString capital; capital = p_map -> getDivisionCapital(division); // There are crazy countries like Norway where two different divisions // have the same capital, avoid asking // The capital of Akershus is ... // Oslo (true) // Oslo (true) // Lillehammer // Moss if (capital != p_capital) { p_radioButtons[i] -> setText(i18nc("@option:radio The capital of is...", "%1", capital)); b = true; } else b = false; } return b; } void divisionCapitalAsker::setAnswerHook(int userSays) { p_currentAnswer.setAnswer(p_radioButtons[userSays] -> text()); } QString divisionCapitalAsker::getQuestionHook() const { return p_map->getDivisionToCapitalTitle(); } diff --git a/src/map.cpp b/src/map.cpp index b59519e..fde41c5 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1,234 +1,234 @@ /*************************************************************************** * Copyright (C) 2004-2007 by Albert Astals Cid * * aacid@kde.org * * * * 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. * ***************************************************************************/ #include "map.h" #include // for RAND_MAX #include #include #include #include #include "division.h" KGmap::KGmap() { p_capitalToDivisionPattern = I18N_NOOP2("@title:group", "%1 is the capital of..."); p_divisionToCapitalPattern = I18N_NOOP2("@title:group", "The capital of %1 is..."); } KGmap::~KGmap() { qDeleteAll(p_divisions); } bool KGmap::addDivision(division *d) { bool b; if ( ( getDivision(d -> getUntranslatedName()) == NULL && getDivision(d -> getRGB()) == NULL ) || ( getDivision(d -> getUntranslatedName()) != NULL && getDivision(d -> getRGB()) == NULL && !d->canAsk(division::eClick) && !getDivision(d -> getUntranslatedName())->canAsk(division::eClick) ) ) { p_divisions.append(d); b = true; } else b = false; return b; } void KGmap::setFile(const QString &s) { p_file = s; } bool KGmap::setMapFile(const QString &s) { p_mapFile = s; return QFile::exists(s); } void KGmap::setName(const QString &s) { p_name = s; } void KGmap::setDivisionsString(const QString &s) { p_divisionsString = s; } void KGmap::setAuthor(const QString &s) { p_author = s; } void KGmap::setCapitalToDivisionQuestionPattern(const QString &str) { p_capitalToDivisionPattern = str; } void KGmap::setDivisionToCapitalQuestionPattern(const QString &str) { p_divisionToCapitalPattern = str; } void KGmap::setCapitalToDivisionTitle(const QString &str) { p_capitalToDivisionTitle = str; } void KGmap::setDivisionToCapitalTitle(const QString &str) { p_divisionToCapitalTitle = str; } uint KGmap::count(division::askMode am) const { uint count = 0; foreach(const division *d, p_divisions) { if (d->canAsk(am)) count++; } return count; } QString KGmap::getDivisionFlagFile(const QString &s) const { return getDivision(s) -> getFlagFile(); } QString KGmap::getDivisionCapital(const QString &s) const { return getDivision(s) -> getCapital(); } QStringList KGmap::getDivisionFalseCapitals(const QString &divisionName) const { return getDivision(divisionName) -> getFalseCapitals(); } KLocalizedString KGmap::getCapitalToDivisionQuestionPattern() const { return ki18nc("@title:group", p_capitalToDivisionPattern.toUtf8()); } -QString KGmap::getDivisionToCapitalQuestionPattern() const +KLocalizedString KGmap::getDivisionToCapitalQuestionPattern() const { - return p_divisionToCapitalPattern; + return ki18nc("@title:group", p_divisionToCapitalPattern.toUtf8()); } QString KGmap::getCapitalToDivisionTitle() const { return p_capitalToDivisionTitle; } QString KGmap::getDivisionToCapitalTitle() const { return p_divisionToCapitalTitle; } QString KGmap::getFile() const { return p_file; } QString KGmap::getFileName() const { QFileInfo fi(p_file); return fi.fileName(); } QString KGmap::getMapFile() const { return p_mapFile; } QString KGmap::getName() const { return p_name; } QString KGmap::getDivisionsString() const { if (p_divisionsString.isNull()) return i18n("Regions"); else return p_divisionsString; } QString KGmap::getRandomDivision(division::askMode am) const { QList aux; int i = (int)((float)p_divisions.size() * KRandom::random() / (RAND_MAX + 1.0)); if (!p_divisions[i] -> canAsk(am)) return getRandomDivision(am); else return p_divisions[i] -> getUntranslatedName(); } QString KGmap::getWhatIs(QRgb c, bool all) const { // this is only asked from mapasker.cpp hence the division::eClick in canAsk division *d = getDivision(c); if (d == NULL) return QStringLiteral("nothing"); else { if (all) return d -> getUntranslatedName(); else if (d -> canAsk(division::eClick)) return d -> getUntranslatedName(); else return QLatin1String(""); } } QString KGmap::getAuthor() const { return p_author; } QColor KGmap::getColor(const QString &s) const { return QColor(getDivision(s)->getRGB()); } QList KGmap::getIgnoredDivisions(division::askMode am) const { QList ignoredDivisions; foreach (division* div, p_divisions) if (!div->canAsk(am)) ignoredDivisions << div; return ignoredDivisions; } QList KGmap::getAllDivisionsOrdered() const { QList constDivisions; foreach (const division* div, p_divisions) constDivisions << div; return constDivisions; } division *KGmap::getDivision(const QString &divisionName) const { foreach (division* div, p_divisions) { if (div->getUntranslatedName() == divisionName) return div; } return NULL; } division *KGmap::getDivision(QRgb c) const { foreach (division* div, p_divisions) { if (div->getRGB() == c) return div; } return NULL; } bool KGmap::getDivisionCanAsk(const QString &div, division::askMode am) const { return getDivision(div) -> canAsk(am); } diff --git a/src/map.h b/src/map.h index 5bf4116..6fc52a2 100644 --- a/src/map.h +++ b/src/map.h @@ -1,75 +1,75 @@ /*************************************************************************** * Copyright (C) 2004-2007 by Albert Astals Cid * * aacid@kde.org * * * * 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. * ***************************************************************************/ #ifndef MAP_H #define MAP_H #include #include #include #include "division.h" class KGmap { public: KGmap(); ~KGmap(); bool addDivision(division *d); void setFile(const QString &s); bool setMapFile(const QString &s); void setName(const QString &s); void setDivisionsString(const QString &s); void setAuthor(const QString &s); void setCapitalToDivisionQuestionPattern(const QString &str); void setDivisionToCapitalQuestionPattern(const QString &str); void setCapitalToDivisionTitle(const QString &str); void setDivisionToCapitalTitle(const QString &str); // return the number of askable divisions uint count(division::askMode am) const; QString getDivisionFlagFile(const QString &divisionName) const; QString getDivisionCapital(const QString &divisionName) const; QStringList getDivisionFalseCapitals(const QString &divisionName) const; bool getDivisionCanAsk(const QString &div, division::askMode am) const; QString getFile() const; QString getFileName() const; QString getMapFile() const; QString getName() const; QString getDivisionsString() const; QString getRandomDivision(division::askMode am) const; QString getWhatIs(QRgb c, bool all) const; QString getAuthor() const; QColor getColor(const QString &s) const; QList getIgnoredDivisions(division::askMode am) const; QList getAllDivisionsOrdered() const; KLocalizedString getCapitalToDivisionQuestionPattern() const; - QString getDivisionToCapitalQuestionPattern() const; + KLocalizedString getDivisionToCapitalQuestionPattern() const; QString getCapitalToDivisionTitle() const; QString getDivisionToCapitalTitle() const; division *getDivision(QRgb c) const; division *getDivision(const QString &divisionName) const; private: QList p_divisions; QString p_name, p_file, p_mapFile; QString p_divisionsString; QString p_capitalToDivisionPattern; QString p_divisionToCapitalPattern; QString p_capitalToDivisionTitle; QString p_divisionToCapitalTitle; QString p_author; }; #endif