diff --git a/qt/fav_players.cpp b/qt/fav_players.cpp index 1ab71d0..1637865 100644 --- a/qt/fav_players.cpp +++ b/qt/fav_players.cpp @@ -129,7 +129,8 @@ void FavPlayersDialog::importPlayers() { if (row.size() < 4) throw BaseException(_("Invalid file (not enough values)")); - PlayerDef def(qfl(row[0]), qfl(row[1]), qfl(row[2]), row[3] != "0"); + // The player is not a default one if the corresponding flag is incorrect + PlayerDef def(qfl(row[0]), qfl(row[1]), qfl(row[2]), row[3] == "1"); players.push_back(def); } m_helper->addPlayers(players); diff --git a/qt/players_table_helper.cpp b/qt/players_table_helper.cpp index f2c5ed7..3845ace 100644 --- a/qt/players_table_helper.cpp +++ b/qt/players_table_helper.cpp @@ -212,15 +212,9 @@ int PlayersTableHelper::getRowCount() const void PlayersTableHelper::addPlayers(const QList &iList) { - // Only add players which are not already there - QSet tmpSet = getPlayers(false).toSet(); Q_FOREACH(const PlayerDef &player, iList) { - if (!tmpSet.contains(player)) - { - addRow(player); - tmpSet.insert(player); - } + addPlayer(player, false, false); } } @@ -230,7 +224,7 @@ void PlayersTableHelper::addPlayer(const PlayerDef &iPlayer, bool renameIfDuplicate) { QSet tmpSet = getPlayers(false).toSet(); - PlayerDef def = iPlayer; + PlayerDef def = normalize(iPlayer); // Generate a unique name if needed if (renameIfDuplicate) { @@ -267,9 +261,11 @@ void PlayersTableHelper::addRow(const PlayerDef &iDef) const int row = m_tablePlayers->rowCount(); m_tablePlayers->setRowCount(row + 1); m_tablePlayers->setRowHeight(row, 24); + m_tablePlayers->setItem(row, 0, new QTableWidgetItem(iDef.name)); m_tablePlayers->setItem(row, 1, new QTableWidgetItem(iDef.type)); m_tablePlayers->setItem(row, 2, new QTableWidgetItem(iDef.level)); + QTableWidgetItem *item = new QTableWidgetItem; item->setData(Qt::DisplayRole, iDef.isDefault); m_tablePlayers->setItem(row, 3, item); @@ -277,6 +273,32 @@ void PlayersTableHelper::addRow(const PlayerDef &iDef) } +PlayerDef PlayersTableHelper::normalize(const PlayerDef &iDef) const +{ + PlayerDef defCopy = iDef; + defCopy.type = iDef.type == _q(kAI) ? _q(kAI) : _q(kHUMAN); + + QString level; + if (defCopy.type == _q(kAI)) + { + bool ok = false; + int value = iDef.level.toInt(&ok); + if (!ok) + value = 100; + if (value < 0) + value = 0; + if (value > 100) + value = 100; + level = QString("%1").arg(value); + } + else + level = ""; + defCopy.level = level; + + return defCopy; +} + + QList PlayersTableHelper::getFavPlayers() { QList playersList; @@ -299,9 +321,11 @@ QList PlayersTableHelper::getFavPlayers() void PlayersTableHelper::saveFavPlayers(const QList &iFavPlayers) { QSettings qs; + qs.remove("FavPlayers"); qs.beginWriteArray("FavPlayers"); for (int i = 0; i < iFavPlayers.size(); ++i) { + LOG_DEBUG("Writing fav player"); qs.setArrayIndex(i); qs.setValue("name", iFavPlayers.at(i).name); qs.setValue("type", iFavPlayers.at(i).type); diff --git a/qt/players_table_helper.h b/qt/players_table_helper.h index 7210176..040f5ff 100644 --- a/qt/players_table_helper.h +++ b/qt/players_table_helper.h @@ -94,6 +94,9 @@ private: QList m_popupActions; bool m_showDefaultColumn; + /// Return a "normalized" player def, i.e. with correct values + PlayerDef normalize(const PlayerDef &iDef) const; + };