bugfix
This commit is contained in:
parent
ebca375755
commit
9f35340188
11 changed files with 135 additions and 59 deletions
|
@ -222,6 +222,14 @@ void CardInfo::clearPixmapCache()
|
|||
}
|
||||
}
|
||||
|
||||
void CardInfo::clearPixmapCacheMiss()
|
||||
{
|
||||
if (!pixmap)
|
||||
return;
|
||||
if (pixmap->isNull())
|
||||
clearPixmapCache();
|
||||
}
|
||||
|
||||
void CardInfo::updatePixmapCache()
|
||||
{
|
||||
qDebug(QString("Updating pixmap cache for %1").arg(name).toLatin1());
|
||||
|
@ -456,6 +464,14 @@ void CardDatabase::updatePicDownload(int _picDownload)
|
|||
picDownload = settings.value("personal/picturedownload", 0).toInt();
|
||||
} else
|
||||
picDownload = _picDownload;
|
||||
|
||||
if (picDownload) {
|
||||
QHashIterator<QString, CardInfo *> cardIterator(cardHash);
|
||||
while (cardIterator.hasNext()) {
|
||||
CardInfo *c = cardIterator.next().value();
|
||||
c->clearPixmapCacheMiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CardDatabase::updatePicsPath(const QString &path)
|
||||
|
|
|
@ -83,6 +83,7 @@ public:
|
|||
QPixmap *loadPixmap();
|
||||
QPixmap *getPixmap(QSize size);
|
||||
void clearPixmapCache();
|
||||
void clearPixmapCacheMiss();
|
||||
void updatePixmapCache();
|
||||
private slots:
|
||||
void picDownloadFinished(int id, bool error);
|
||||
|
|
|
@ -226,10 +226,20 @@ void Client::readLine()
|
|||
ServerResponse resp;
|
||||
if (values[0] == "ok")
|
||||
resp = RespOk;
|
||||
else if (values[0] == "name_not_found")
|
||||
resp = RespNameNotFound;
|
||||
else if (values[0] == "login_needed")
|
||||
resp = RespLoginNeeded;
|
||||
else if (values[0] == "syntax")
|
||||
resp = RespSyntaxError;
|
||||
else if (values[0] == "context")
|
||||
resp = RespContextError;
|
||||
else if (values[0] == "password")
|
||||
resp = RespPassword;
|
||||
resp = RespPasswordWrong;
|
||||
else if (values[0] == "spectators_not_allowed")
|
||||
resp = RespSpectatorsNotAllowed;
|
||||
else
|
||||
resp = RespErr;
|
||||
resp = RespInvalid;
|
||||
pc->responseReceived(resp);
|
||||
} else if (prefix == "list_games") {
|
||||
if (values.size() != 8) {
|
||||
|
|
|
@ -20,8 +20,13 @@ enum ProtocolStatus { StatusDisconnected,
|
|||
|
||||
enum ServerResponse {
|
||||
RespOk,
|
||||
RespPassword,
|
||||
RespErr
|
||||
RespNameNotFound,
|
||||
RespLoginNeeded,
|
||||
RespSyntaxError,
|
||||
RespContextError,
|
||||
RespPasswordWrong,
|
||||
RespSpectatorsNotAllowed,
|
||||
RespInvalid
|
||||
};
|
||||
|
||||
enum ServerEventType {
|
||||
|
|
|
@ -72,7 +72,7 @@ void DlgCreateGame::checkResponse(ServerResponse response)
|
|||
if (response == RespOk)
|
||||
accept();
|
||||
else {
|
||||
QMessageBox::critical(this, tr("Error"), tr("XXX"));
|
||||
QMessageBox::critical(this, tr("Error"), tr("Server error."));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,22 +51,19 @@ void GameSelector::actCreate()
|
|||
disableGameList();
|
||||
}
|
||||
|
||||
void GameSelector::actRefresh()
|
||||
{
|
||||
client->listGames();
|
||||
}
|
||||
|
||||
void GameSelector::checkResponse(ServerResponse response)
|
||||
{
|
||||
createButton->setEnabled(true);
|
||||
joinButton->setEnabled(true);
|
||||
spectateButton->setEnabled(true);
|
||||
|
||||
if (response == RespOk)
|
||||
disableGameList();
|
||||
else {
|
||||
QMessageBox::critical(this, tr("Error"), tr("XXX"));
|
||||
return;
|
||||
switch (response) {
|
||||
case RespOk: disableGameList(); break;
|
||||
case RespPasswordWrong: QMessageBox::critical(this, tr("Error"), tr("Wrong password.")); break;
|
||||
case RespSpectatorsNotAllowed: QMessageBox::critical(this, tr("Error"), tr("Spectators are not allowed in this game.")); break;
|
||||
case RespContextError: QMessageBox::critical(this, tr("Error"), tr("The game is already full.")); break;
|
||||
case RespNameNotFound: QMessageBox::critical(this, tr("Error"), tr("The game does not exist any more.")); break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,7 +74,7 @@ void GameSelector::actJoin()
|
|||
QModelIndex ind = gameListView->currentIndex();
|
||||
if (!ind.isValid())
|
||||
return;
|
||||
const ServerGame &game = gameListModel->getGame(ind.row());
|
||||
const ServerGame &game = gameListModel->getGame(ind.data(Qt::UserRole).toInt());
|
||||
QString password;
|
||||
if (game.getHasPassword()) {
|
||||
bool ok;
|
||||
|
|
|
@ -20,7 +20,6 @@ public:
|
|||
private slots:
|
||||
void showFullGamesChanged(int state);
|
||||
void actCreate();
|
||||
void actRefresh();
|
||||
void actJoin();
|
||||
void checkResponse(ServerResponse response);
|
||||
private:
|
||||
|
|
|
@ -8,7 +8,11 @@ GamesModel::~GamesModel()
|
|||
|
||||
QVariant GamesModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
if ((role != Qt::DisplayRole) || !index.isValid())
|
||||
if (!index.isValid())
|
||||
return QVariant();
|
||||
if (role == Qt::UserRole)
|
||||
return index.row();
|
||||
if (role != Qt::DisplayRole)
|
||||
return QVariant();
|
||||
if ((index.row() >= gameList.size()) || (index.column() >= columnCount()))
|
||||
return QVariant();
|
||||
|
|
|
@ -35,7 +35,7 @@ void MessageLogWidget::logSocketError(const QString &errorString)
|
|||
void MessageLogWidget::logServerError(ServerResponse response)
|
||||
{
|
||||
switch (response) {
|
||||
case RespPassword: append(tr("Invalid password.")); break;
|
||||
case RespPasswordWrong: append(tr("Invalid password.")); break;
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -304,12 +304,12 @@
|
|||
<translation>F12</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/counter.cpp" line="100"/>
|
||||
<location filename="../src/counter.cpp" line="103"/>
|
||||
<source>Set counter</source>
|
||||
<translation>Zähler setzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/counter.cpp" line="100"/>
|
||||
<location filename="../src/counter.cpp" line="103"/>
|
||||
<source>New value for counter '%1':</source>
|
||||
<translation>Neuer Wert für den Zähler '%1':</translation>
|
||||
</message>
|
||||
|
@ -433,8 +433,12 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_creategame.cpp" line="75"/>
|
||||
<source>Server error.</source>
|
||||
<translation>Serverfehler.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XXX</source>
|
||||
<translation>XXX</translation>
|
||||
<translation type="obsolete">XXX</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -770,42 +774,64 @@
|
|||
<context>
|
||||
<name>GameSelector</name>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="119"/>
|
||||
<location filename="../src/gameselector.cpp" line="116"/>
|
||||
<source>C&reate</source>
|
||||
<translation>Spiel e&rstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="120"/>
|
||||
<location filename="../src/gameselector.cpp" line="117"/>
|
||||
<source>&Join</source>
|
||||
<translation>&Teilnehmen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="68"/>
|
||||
<location filename="../src/gameselector.cpp" line="62"/>
|
||||
<location filename="../src/gameselector.cpp" line="63"/>
|
||||
<location filename="../src/gameselector.cpp" line="64"/>
|
||||
<location filename="../src/gameselector.cpp" line="65"/>
|
||||
<source>Error</source>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="68"/>
|
||||
<source>XXX</source>
|
||||
<translation>XXX</translation>
|
||||
<translation type="obsolete">XXX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="84"/>
|
||||
<location filename="../src/gameselector.cpp" line="62"/>
|
||||
<source>Wrong password.</source>
|
||||
<translation>Falsches Passwort.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="63"/>
|
||||
<source>Spectators are not allowed in this game.</source>
|
||||
<translation>In diesem Spiel sind keine Zuschauer zugelassen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="64"/>
|
||||
<source>The game is already full.</source>
|
||||
<translation>Das Spiel ist bereits voll.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="65"/>
|
||||
<source>The game does not exist any more.</source>
|
||||
<translation>Dieses Spiel gibt es nicht mehr.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="81"/>
|
||||
<source>Join game</source>
|
||||
<translation>Spiel beitreten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="84"/>
|
||||
<location filename="../src/gameselector.cpp" line="81"/>
|
||||
<source>Password:</source>
|
||||
<translation>Passwort:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="118"/>
|
||||
<location filename="../src/gameselector.cpp" line="115"/>
|
||||
<source>&Show full games</source>
|
||||
<translation>&Volle Spiele anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="121"/>
|
||||
<location filename="../src/gameselector.cpp" line="118"/>
|
||||
<source>J&oin as spectator</source>
|
||||
<translation>&Zuschauen</translation>
|
||||
</message>
|
||||
|
@ -813,12 +839,12 @@
|
|||
<context>
|
||||
<name>GamesModel</name>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="20"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="24"/>
|
||||
<source>yes</source>
|
||||
<translation>ja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="20"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="24"/>
|
||||
<source>no</source>
|
||||
<translation>nein</translation>
|
||||
</message>
|
||||
|
@ -827,32 +853,32 @@
|
|||
<translation type="obsolete">Spiel ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="33"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="37"/>
|
||||
<source>Creator</source>
|
||||
<translation>Ersteller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="32"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="36"/>
|
||||
<source>Description</source>
|
||||
<translation>Beschreibung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="22"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="26"/>
|
||||
<source>not allowed</source>
|
||||
<translation>nicht erlaubt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="34"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="38"/>
|
||||
<source>Password</source>
|
||||
<translation>Passwort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="35"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="39"/>
|
||||
<source>Players</source>
|
||||
<translation>Spieler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="36"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="40"/>
|
||||
<source>Spectators</source>
|
||||
<translation>Zuschauer</translation>
|
||||
</message>
|
||||
|
|
|
@ -269,12 +269,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/counter.cpp" line="100"/>
|
||||
<location filename="../src/counter.cpp" line="103"/>
|
||||
<source>Set counter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/counter.cpp" line="100"/>
|
||||
<location filename="../src/counter.cpp" line="103"/>
|
||||
<source>New value for counter '%1':</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -398,7 +398,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/dlg_creategame.cpp" line="75"/>
|
||||
<source>XXX</source>
|
||||
<source>Server error.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -564,42 +564,60 @@
|
|||
<context>
|
||||
<name>GameSelector</name>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="119"/>
|
||||
<location filename="../src/gameselector.cpp" line="116"/>
|
||||
<source>C&reate</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="120"/>
|
||||
<location filename="../src/gameselector.cpp" line="117"/>
|
||||
<source>&Join</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="68"/>
|
||||
<location filename="../src/gameselector.cpp" line="62"/>
|
||||
<location filename="../src/gameselector.cpp" line="63"/>
|
||||
<location filename="../src/gameselector.cpp" line="64"/>
|
||||
<location filename="../src/gameselector.cpp" line="65"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="68"/>
|
||||
<source>XXX</source>
|
||||
<location filename="../src/gameselector.cpp" line="62"/>
|
||||
<source>Wrong password.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="84"/>
|
||||
<location filename="../src/gameselector.cpp" line="63"/>
|
||||
<source>Spectators are not allowed in this game.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="64"/>
|
||||
<source>The game is already full.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="65"/>
|
||||
<source>The game does not exist any more.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="81"/>
|
||||
<source>Join game</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="84"/>
|
||||
<location filename="../src/gameselector.cpp" line="81"/>
|
||||
<source>Password:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="118"/>
|
||||
<location filename="../src/gameselector.cpp" line="115"/>
|
||||
<source>&Show full games</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gameselector.cpp" line="121"/>
|
||||
<location filename="../src/gameselector.cpp" line="118"/>
|
||||
<source>J&oin as spectator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -607,42 +625,42 @@
|
|||
<context>
|
||||
<name>GamesModel</name>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="20"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="24"/>
|
||||
<source>yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="20"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="24"/>
|
||||
<source>no</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="33"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="37"/>
|
||||
<source>Creator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="32"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="36"/>
|
||||
<source>Description</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="22"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="26"/>
|
||||
<source>not allowed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="34"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="38"/>
|
||||
<source>Password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="35"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="39"/>
|
||||
<source>Players</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gamesmodel.cpp" line="36"/>
|
||||
<location filename="../src/gamesmodel.cpp" line="40"/>
|
||||
<source>Spectators</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in a new issue