This commit is contained in:
Max-Wilhelm Bruker 2009-10-03 02:47:17 +02:00
parent ebca375755
commit 9f35340188
11 changed files with 135 additions and 59 deletions

View file

@ -222,6 +222,14 @@ void CardInfo::clearPixmapCache()
} }
} }
void CardInfo::clearPixmapCacheMiss()
{
if (!pixmap)
return;
if (pixmap->isNull())
clearPixmapCache();
}
void CardInfo::updatePixmapCache() void CardInfo::updatePixmapCache()
{ {
qDebug(QString("Updating pixmap cache for %1").arg(name).toLatin1()); 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(); picDownload = settings.value("personal/picturedownload", 0).toInt();
} else } else
picDownload = _picDownload; 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) void CardDatabase::updatePicsPath(const QString &path)

View file

@ -83,6 +83,7 @@ public:
QPixmap *loadPixmap(); QPixmap *loadPixmap();
QPixmap *getPixmap(QSize size); QPixmap *getPixmap(QSize size);
void clearPixmapCache(); void clearPixmapCache();
void clearPixmapCacheMiss();
void updatePixmapCache(); void updatePixmapCache();
private slots: private slots:
void picDownloadFinished(int id, bool error); void picDownloadFinished(int id, bool error);

View file

@ -226,10 +226,20 @@ void Client::readLine()
ServerResponse resp; ServerResponse resp;
if (values[0] == "ok") if (values[0] == "ok")
resp = RespOk; 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") else if (values[0] == "password")
resp = RespPassword; resp = RespPasswordWrong;
else if (values[0] == "spectators_not_allowed")
resp = RespSpectatorsNotAllowed;
else else
resp = RespErr; resp = RespInvalid;
pc->responseReceived(resp); pc->responseReceived(resp);
} else if (prefix == "list_games") { } else if (prefix == "list_games") {
if (values.size() != 8) { if (values.size() != 8) {

View file

@ -20,8 +20,13 @@ enum ProtocolStatus { StatusDisconnected,
enum ServerResponse { enum ServerResponse {
RespOk, RespOk,
RespPassword, RespNameNotFound,
RespErr RespLoginNeeded,
RespSyntaxError,
RespContextError,
RespPasswordWrong,
RespSpectatorsNotAllowed,
RespInvalid
}; };
enum ServerEventType { enum ServerEventType {

View file

@ -72,7 +72,7 @@ void DlgCreateGame::checkResponse(ServerResponse response)
if (response == RespOk) if (response == RespOk)
accept(); accept();
else { else {
QMessageBox::critical(this, tr("Error"), tr("XXX")); QMessageBox::critical(this, tr("Error"), tr("Server error."));
return; return;
} }
} }

View file

@ -51,22 +51,19 @@ void GameSelector::actCreate()
disableGameList(); disableGameList();
} }
void GameSelector::actRefresh()
{
client->listGames();
}
void GameSelector::checkResponse(ServerResponse response) void GameSelector::checkResponse(ServerResponse response)
{ {
createButton->setEnabled(true); createButton->setEnabled(true);
joinButton->setEnabled(true); joinButton->setEnabled(true);
spectateButton->setEnabled(true); spectateButton->setEnabled(true);
if (response == RespOk) switch (response) {
disableGameList(); case RespOk: disableGameList(); break;
else { case RespPasswordWrong: QMessageBox::critical(this, tr("Error"), tr("Wrong password.")); break;
QMessageBox::critical(this, tr("Error"), tr("XXX")); case RespSpectatorsNotAllowed: QMessageBox::critical(this, tr("Error"), tr("Spectators are not allowed in this game.")); break;
return; 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(); QModelIndex ind = gameListView->currentIndex();
if (!ind.isValid()) if (!ind.isValid())
return; return;
const ServerGame &game = gameListModel->getGame(ind.row()); const ServerGame &game = gameListModel->getGame(ind.data(Qt::UserRole).toInt());
QString password; QString password;
if (game.getHasPassword()) { if (game.getHasPassword()) {
bool ok; bool ok;

View file

@ -20,7 +20,6 @@ public:
private slots: private slots:
void showFullGamesChanged(int state); void showFullGamesChanged(int state);
void actCreate(); void actCreate();
void actRefresh();
void actJoin(); void actJoin();
void checkResponse(ServerResponse response); void checkResponse(ServerResponse response);
private: private:

View file

@ -8,7 +8,11 @@ GamesModel::~GamesModel()
QVariant GamesModel::data(const QModelIndex &index, int role) const 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(); return QVariant();
if ((index.row() >= gameList.size()) || (index.column() >= columnCount())) if ((index.row() >= gameList.size()) || (index.column() >= columnCount()))
return QVariant(); return QVariant();

View file

@ -35,7 +35,7 @@ void MessageLogWidget::logSocketError(const QString &errorString)
void MessageLogWidget::logServerError(ServerResponse response) void MessageLogWidget::logServerError(ServerResponse response)
{ {
switch (response) { switch (response) {
case RespPassword: append(tr("Invalid password.")); break; case RespPasswordWrong: append(tr("Invalid password.")); break;
default: ; default: ;
} }
} }

View file

@ -304,12 +304,12 @@
<translation>F12</translation> <translation>F12</translation>
</message> </message>
<message> <message>
<location filename="../src/counter.cpp" line="100"/> <location filename="../src/counter.cpp" line="103"/>
<source>Set counter</source> <source>Set counter</source>
<translation>Zähler setzen</translation> <translation>Zähler setzen</translation>
</message> </message>
<message> <message>
<location filename="../src/counter.cpp" line="100"/> <location filename="../src/counter.cpp" line="103"/>
<source>New value for counter &apos;%1&apos;:</source> <source>New value for counter &apos;%1&apos;:</source>
<translation>Neuer Wert für den Zähler &apos;%1&apos;:</translation> <translation>Neuer Wert für den Zähler &apos;%1&apos;:</translation>
</message> </message>
@ -433,8 +433,12 @@
</message> </message>
<message> <message>
<location filename="../src/dlg_creategame.cpp" line="75"/> <location filename="../src/dlg_creategame.cpp" line="75"/>
<source>Server error.</source>
<translation>Serverfehler.</translation>
</message>
<message>
<source>XXX</source> <source>XXX</source>
<translation>XXX</translation> <translation type="obsolete">XXX</translation>
</message> </message>
</context> </context>
<context> <context>
@ -770,42 +774,64 @@
<context> <context>
<name>GameSelector</name> <name>GameSelector</name>
<message> <message>
<location filename="../src/gameselector.cpp" line="119"/> <location filename="../src/gameselector.cpp" line="116"/>
<source>C&amp;reate</source> <source>C&amp;reate</source>
<translation>Spiel e&amp;rstellen</translation> <translation>Spiel e&amp;rstellen</translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="120"/> <location filename="../src/gameselector.cpp" line="117"/>
<source>&amp;Join</source> <source>&amp;Join</source>
<translation>&amp;Teilnehmen</translation> <translation>&amp;Teilnehmen</translation>
</message> </message>
<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> <source>Error</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="68"/>
<source>XXX</source> <source>XXX</source>
<translation>XXX</translation> <translation type="obsolete">XXX</translation>
</message> </message>
<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> <source>Join game</source>
<translation>Spiel beitreten</translation> <translation>Spiel beitreten</translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="84"/> <location filename="../src/gameselector.cpp" line="81"/>
<source>Password:</source> <source>Password:</source>
<translation>Passwort:</translation> <translation>Passwort:</translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="118"/> <location filename="../src/gameselector.cpp" line="115"/>
<source>&amp;Show full games</source> <source>&amp;Show full games</source>
<translation>&amp;Volle Spiele anzeigen</translation> <translation>&amp;Volle Spiele anzeigen</translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="121"/> <location filename="../src/gameselector.cpp" line="118"/>
<source>J&amp;oin as spectator</source> <source>J&amp;oin as spectator</source>
<translation>&amp;Zuschauen</translation> <translation>&amp;Zuschauen</translation>
</message> </message>
@ -813,12 +839,12 @@
<context> <context>
<name>GamesModel</name> <name>GamesModel</name>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="20"/> <location filename="../src/gamesmodel.cpp" line="24"/>
<source>yes</source> <source>yes</source>
<translation>ja</translation> <translation>ja</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="20"/> <location filename="../src/gamesmodel.cpp" line="24"/>
<source>no</source> <source>no</source>
<translation>nein</translation> <translation>nein</translation>
</message> </message>
@ -827,32 +853,32 @@
<translation type="obsolete">Spiel ID</translation> <translation type="obsolete">Spiel ID</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="33"/> <location filename="../src/gamesmodel.cpp" line="37"/>
<source>Creator</source> <source>Creator</source>
<translation>Ersteller</translation> <translation>Ersteller</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="32"/> <location filename="../src/gamesmodel.cpp" line="36"/>
<source>Description</source> <source>Description</source>
<translation>Beschreibung</translation> <translation>Beschreibung</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="22"/> <location filename="../src/gamesmodel.cpp" line="26"/>
<source>not allowed</source> <source>not allowed</source>
<translation>nicht erlaubt</translation> <translation>nicht erlaubt</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="34"/> <location filename="../src/gamesmodel.cpp" line="38"/>
<source>Password</source> <source>Password</source>
<translation>Passwort</translation> <translation>Passwort</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="35"/> <location filename="../src/gamesmodel.cpp" line="39"/>
<source>Players</source> <source>Players</source>
<translation>Spieler</translation> <translation>Spieler</translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="36"/> <location filename="../src/gamesmodel.cpp" line="40"/>
<source>Spectators</source> <source>Spectators</source>
<translation>Zuschauer</translation> <translation>Zuschauer</translation>
</message> </message>

View file

@ -269,12 +269,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/counter.cpp" line="100"/> <location filename="../src/counter.cpp" line="103"/>
<source>Set counter</source> <source>Set counter</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/counter.cpp" line="100"/> <location filename="../src/counter.cpp" line="103"/>
<source>New value for counter &apos;%1&apos;:</source> <source>New value for counter &apos;%1&apos;:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -398,7 +398,7 @@
</message> </message>
<message> <message>
<location filename="../src/dlg_creategame.cpp" line="75"/> <location filename="../src/dlg_creategame.cpp" line="75"/>
<source>XXX</source> <source>Server error.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -564,42 +564,60 @@
<context> <context>
<name>GameSelector</name> <name>GameSelector</name>
<message> <message>
<location filename="../src/gameselector.cpp" line="119"/> <location filename="../src/gameselector.cpp" line="116"/>
<source>C&amp;reate</source> <source>C&amp;reate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="120"/> <location filename="../src/gameselector.cpp" line="117"/>
<source>&amp;Join</source> <source>&amp;Join</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="68"/> <location filename="../src/gameselector.cpp" line="62"/>
<source>XXX</source> <source>Wrong password.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Join game</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="84"/> <location filename="../src/gameselector.cpp" line="81"/>
<source>Password:</source> <source>Password:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="118"/> <location filename="../src/gameselector.cpp" line="115"/>
<source>&amp;Show full games</source> <source>&amp;Show full games</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gameselector.cpp" line="121"/> <location filename="../src/gameselector.cpp" line="118"/>
<source>J&amp;oin as spectator</source> <source>J&amp;oin as spectator</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -607,42 +625,42 @@
<context> <context>
<name>GamesModel</name> <name>GamesModel</name>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="20"/> <location filename="../src/gamesmodel.cpp" line="24"/>
<source>yes</source> <source>yes</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="20"/> <location filename="../src/gamesmodel.cpp" line="24"/>
<source>no</source> <source>no</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="33"/> <location filename="../src/gamesmodel.cpp" line="37"/>
<source>Creator</source> <source>Creator</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="32"/> <location filename="../src/gamesmodel.cpp" line="36"/>
<source>Description</source> <source>Description</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="22"/> <location filename="../src/gamesmodel.cpp" line="26"/>
<source>not allowed</source> <source>not allowed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="34"/> <location filename="../src/gamesmodel.cpp" line="38"/>
<source>Password</source> <source>Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="35"/> <location filename="../src/gamesmodel.cpp" line="39"/>
<source>Players</source> <source>Players</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/gamesmodel.cpp" line="36"/> <location filename="../src/gamesmodel.cpp" line="40"/>
<source>Spectators</source> <source>Spectators</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>