minor cleanups and optimizations

This commit is contained in:
Max-Wilhelm Bruker 2010-03-06 22:10:50 +01:00
parent b2f83541e7
commit 2c9a8c2b57
15 changed files with 391 additions and 248 deletions

View file

@ -53,6 +53,7 @@ HEADERS += src/counter.h \
src/deckview.h \ src/deckview.h \
src/playerlistwidget.h \ src/playerlistwidget.h \
src/pingpixmapgenerator.h \ src/pingpixmapgenerator.h \
src/settingscache.h \
../common/serializable_item.h \ ../common/serializable_item.h \
../common/decklist.h \ ../common/decklist.h \
../common/protocol.h \ ../common/protocol.h \
@ -105,6 +106,7 @@ SOURCES += src/counter.cpp \
src/deckview.cpp \ src/deckview.cpp \
src/playerlistwidget.cpp \ src/playerlistwidget.cpp \
src/pingpixmapgenerator.cpp \ src/pingpixmapgenerator.cpp \
src/settingscache.cpp \
../common/serializable_item.cpp \ ../common/serializable_item.cpp \
../common/decklist.cpp \ ../common/decklist.cpp \
../common/protocol.cpp \ ../common/protocol.cpp \

View file

@ -1,4 +1,5 @@
#include "carddatabase.h" #include "carddatabase.h"
#include "settingscache.h"
#include <QDir> #include <QDir>
#include <QDirIterator> #include <QDirIterator>
#include <QFile> #include <QFile>
@ -115,7 +116,7 @@ QPixmap *CardInfo::loadPixmap()
if (pixmap) if (pixmap)
return pixmap; return pixmap;
pixmap = new QPixmap(); pixmap = new QPixmap();
QString picsPath = db->getPicsPath(); QString picsPath = settingsCache->getPicsPath();
if (!QDir(picsPath).exists()) if (!QDir(picsPath).exists())
return pixmap; return pixmap;
@ -139,7 +140,7 @@ QPixmap *CardInfo::loadPixmap()
} }
if (pixmap->load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg("downloadedPics").arg(correctedName))) if (pixmap->load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg("downloadedPics").arg(correctedName)))
return pixmap; return pixmap;
if (db->getPicDownload()) if (settingsCache->getPicDownload())
db->startPicDownload(this); db->startPicDownload(this);
return pixmap; return pixmap;
} }
@ -230,12 +231,14 @@ QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardInfo *info)
CardDatabase::CardDatabase(QObject *parent) CardDatabase::CardDatabase(QObject *parent)
: QObject(parent), noCard(0) : QObject(parent), noCard(0)
{ {
connect(settingsCache, SIGNAL(picsPathChanged()), this, SLOT(clearPixmapCache()));
connect(settingsCache, SIGNAL(cardDatabasePathChanged()), this, SLOT(loadCardDatabase()));
connect(settingsCache, SIGNAL(picDownloadChanged()), this, SLOT(picDownloadChanged()));
http = new QHttp(this); http = new QHttp(this);
connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(picDownloadFinished(int, bool))); connect(http, SIGNAL(requestFinished(int, bool)), this, SLOT(picDownloadFinished(int, bool)));
updateDatabasePath(); loadCardDatabase();
updatePicDownload();
updatePicsPath();
noCard = new CardInfo(this); noCard = new CardInfo(this);
noCard->loadPixmap(); // cache pixmap for card back noCard->loadPixmap(); // cache pixmap for card back
@ -334,6 +337,7 @@ void CardDatabase::picDownloadFinished(int id, bool error)
buffer->close(); buffer->close();
if (!error) { if (!error) {
QString picsPath = settingsCache->getPicsPath();
const QByteArray &picData = buffer->data(); const QByteArray &picData = buffer->data();
QPixmap testPixmap; QPixmap testPixmap;
if (testPixmap.loadFromData(picData)) { if (testPixmap.loadFromData(picData)) {
@ -470,42 +474,18 @@ bool CardDatabase::saveToFile(const QString &fileName)
return true; return true;
} }
void CardDatabase::updatePicDownload(int _picDownload) void CardDatabase::picDownloadChanged()
{ {
if (_picDownload == -1) { if (settingsCache->getPicDownload()) {
QSettings settings;
picDownload = settings.value("personal/picturedownload", 0).toInt();
} else
picDownload = _picDownload;
if (picDownload) {
QHashIterator<QString, CardInfo *> cardIterator(cardHash); QHashIterator<QString, CardInfo *> cardIterator(cardHash);
while (cardIterator.hasNext()) { while (cardIterator.hasNext())
CardInfo *c = cardIterator.next().value(); cardIterator.next().value()->clearPixmapCacheMiss();
c->clearPixmapCacheMiss();
}
} }
} }
void CardDatabase::updatePicsPath(const QString &path) void CardDatabase::loadCardDatabase()
{ {
if (path.isEmpty()) { QString cardDatabasePath = settingsCache->getCardDatabasePath();
QSettings settings;
settings.beginGroup("paths");
picsPath = settings.value("pics").toString();
} else
picsPath = path;
clearPixmapCache();
}
void CardDatabase::updateDatabasePath(const QString &path)
{
if (path.isEmpty()) {
QSettings settings;
settings.beginGroup("paths");
cardDatabasePath = settings.value("carddatabase").toString();
} else
cardDatabasePath = path;
if (!cardDatabasePath.isEmpty()) if (!cardDatabasePath.isEmpty())
loadFromFile(cardDatabasePath); loadFromFile(cardDatabasePath);
} }

View file

@ -95,7 +95,6 @@ protected:
QHash<QString, CardSet *> setHash; QHash<QString, CardSet *> setHash;
QMap<int, QPair<CardInfo *, QBuffer *> > downloadBuffers; QMap<int, QPair<CardInfo *, QBuffer *> > downloadBuffers;
CardInfo *noCard; CardInfo *noCard;
QString picsPath, cardDatabasePath;
private: private:
void loadCardsFromXml(QXmlStreamReader &xml); void loadCardsFromXml(QXmlStreamReader &xml);
void loadSetsFromXml(QXmlStreamReader &xml); void loadSetsFromXml(QXmlStreamReader &xml);
@ -109,20 +108,17 @@ public:
CardSet *getSet(const QString &setName); CardSet *getSet(const QString &setName);
QList<CardInfo *> getCardList() const { return cardHash.values(); } QList<CardInfo *> getCardList() const { return cardHash.values(); }
SetList getSetList() const; SetList getSetList() const;
bool getPicDownload() const { return picDownload; }
void clearPixmapCache();
int loadFromFile(const QString &fileName); int loadFromFile(const QString &fileName);
bool saveToFile(const QString &fileName); bool saveToFile(const QString &fileName);
const QString &getPicsPath() const { return picsPath; }
void startPicDownload(CardInfo *card); void startPicDownload(CardInfo *card);
QStringList getAllColors() const; QStringList getAllColors() const;
QStringList getAllMainCardTypes() const; QStringList getAllMainCardTypes() const;
public slots:
void clearPixmapCache();
private slots: private slots:
void picDownloadFinished(int id, bool error); void picDownloadFinished(int id, bool error);
public slots: void loadCardDatabase();
void updatePicsPath(const QString &path = QString()); void picDownloadChanged();
void updateDatabasePath(const QString &path = QString());
void updatePicDownload(int _picDownload = -1);
}; };
#endif #endif

View file

@ -9,6 +9,7 @@
#include "arrowitem.h" #include "arrowitem.h"
#include "main.h" #include "main.h"
#include "protocol_datastructures.h" #include "protocol_datastructures.h"
#include "settingscache.h"
CardItem::CardItem(Player *_owner, const QString &_name, int _cardid, QGraphicsItem *parent) CardItem::CardItem(Player *_owner, const QString &_name, int _cardid, QGraphicsItem *parent)
: AbstractCardItem(_name, parent), owner(_owner), id(_cardid), attacking(false), facedown(false), counters(0), doesntUntap(false), beingPointedAt(false), dragItem(NULL) : AbstractCardItem(_name, parent), owner(_owner), id(_cardid), attacking(false), facedown(false), counters(0), doesntUntap(false), beingPointedAt(false), dragItem(NULL)
@ -153,18 +154,9 @@ void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
setCursor(Qt::OpenHandCursor); setCursor(Qt::OpenHandCursor);
} }
void CardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void CardItem::playCard(QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::RightButton) CardZone *zone = static_cast<CardZone *>(parentItem());
qgraphicsitem_cast<CardZone *>(parentItem())->getPlayer()->showCardMenu(event->screenPos());
setCursor(Qt::OpenHandCursor);
}
void CardItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
event->accept();
CardZone *zone = (CardZone *) parentItem();
// Do nothing if the card belongs to another player // Do nothing if the card belongs to another player
if (!zone->getPlayer()->getLocal()) if (!zone->getPlayer()->getLocal())
return; return;
@ -181,3 +173,20 @@ void CardItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
table->handleDropEventByGrid(id, zone, gridPoint, faceDown, tapped); table->handleDropEventByGrid(id, zone, gridPoint, faceDown, tapped);
} }
} }
void CardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::RightButton)
qgraphicsitem_cast<CardZone *>(parentItem())->getPlayer()->showCardMenu(event->screenPos());
else if ((event->button() == Qt::LeftButton) && !settingsCache->getDoubleClickToPlay())
playCard(event);
setCursor(Qt::OpenHandCursor);
}
void CardItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
if (settingsCache->getDoubleClickToPlay())
playCard(event);
event->accept();
}

View file

@ -24,6 +24,8 @@ private:
QPoint gridPoint; QPoint gridPoint;
bool beingPointedAt; bool beingPointedAt;
CardDragItem *dragItem; CardDragItem *dragItem;
void playCard(QGraphicsSceneMouseEvent *event);
public: public:
enum { Type = typeCard }; enum { Type = typeCard };
int type() const { return Type; } int type() const { return Type; }

View file

@ -3,57 +3,50 @@
#include "carddatabase.h" #include "carddatabase.h"
#include "dlg_settings.h" #include "dlg_settings.h"
#include "main.h" #include "main.h"
#include "settingscache.h"
GeneralSettingsPage::GeneralSettingsPage() GeneralSettingsPage::GeneralSettingsPage()
{ {
QSettings settings;
personalGroupBox = new QGroupBox;
languageLabel = new QLabel; languageLabel = new QLabel;
languageBox = new QComboBox; languageBox = new QComboBox;
settings.beginGroup("personal"); QString setLanguage = settingsCache->getLang();
QString setLanguage = settings.value("lang").toString();
QStringList qmFiles = findQmFiles(); QStringList qmFiles = findQmFiles();
for (int i = 0; i < qmFiles.size(); i++) { for (int i = 0; i < qmFiles.size(); i++) {
QString langName = languageName(qmFiles[i]); QString langName = languageName(qmFiles[i]);
languageBox->addItem(langName, qmFiles[i]); languageBox->addItem(langName, qmFiles[i]);
if ((qmFiles[i] == settings.value("lang").toString()) || (setLanguage.isEmpty() && langName == tr("English"))) if ((qmFiles[i] == setLanguage) || (setLanguage.isEmpty() && langName == tr("English")))
languageBox->setCurrentIndex(i); languageBox->setCurrentIndex(i);
} }
picDownloadCheckBox = new QCheckBox; picDownloadCheckBox = new QCheckBox;
picDownloadCheckBox->setChecked(settings.value("picturedownload", 0).toInt()); picDownloadCheckBox->setChecked(settingsCache->getPicDownload());
settings.endGroup();
connect(languageBox, SIGNAL(currentIndexChanged(int)), this, SLOT(languageBoxChanged(int))); connect(languageBox, SIGNAL(currentIndexChanged(int)), this, SLOT(languageBoxChanged(int)));
connect(picDownloadCheckBox, SIGNAL(stateChanged(int)), this, SLOT(picDownloadCheckBoxChanged(int))); connect(picDownloadCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setPicDownload(int)));
QGridLayout *personalGrid = new QGridLayout; QGridLayout *personalGrid = new QGridLayout;
personalGrid->addWidget(languageLabel, 0, 0); personalGrid->addWidget(languageLabel, 0, 0);
personalGrid->addWidget(languageBox, 0, 1); personalGrid->addWidget(languageBox, 0, 1);
personalGrid->addWidget(picDownloadCheckBox, 1, 0, 1, 2); personalGrid->addWidget(picDownloadCheckBox, 1, 0, 1, 2);
personalGroupBox = new QGroupBox;
personalGroupBox->setLayout(personalGrid); personalGroupBox->setLayout(personalGrid);
pathsGroupBox = new QGroupBox;
settings.beginGroup("paths");
deckPathLabel = new QLabel; deckPathLabel = new QLabel;
deckPathEdit = new QLineEdit(settings.value("decks").toString()); deckPathEdit = new QLineEdit(settingsCache->getDeckPath());
deckPathEdit->setReadOnly(true); deckPathEdit->setReadOnly(true);
QPushButton *deckPathButton = new QPushButton("..."); QPushButton *deckPathButton = new QPushButton("...");
connect(deckPathButton, SIGNAL(clicked()), this, SLOT(deckPathButtonClicked())); connect(deckPathButton, SIGNAL(clicked()), this, SLOT(deckPathButtonClicked()));
picsPathLabel = new QLabel; picsPathLabel = new QLabel;
picsPathEdit = new QLineEdit(settings.value("pics").toString()); picsPathEdit = new QLineEdit(settingsCache->getPicsPath());
picsPathEdit->setReadOnly(true); picsPathEdit->setReadOnly(true);
QPushButton *picsPathButton = new QPushButton("..."); QPushButton *picsPathButton = new QPushButton("...");
connect(picsPathButton, SIGNAL(clicked()), this, SLOT(picsPathButtonClicked())); connect(picsPathButton, SIGNAL(clicked()), this, SLOT(picsPathButtonClicked()));
cardDatabasePathLabel = new QLabel; cardDatabasePathLabel = new QLabel;
cardDatabasePathEdit = new QLineEdit(settings.value("carddatabase").toString()); cardDatabasePathEdit = new QLineEdit(settingsCache->getCardDatabasePath());
cardDatabasePathEdit->setReadOnly(true); cardDatabasePathEdit->setReadOnly(true);
QPushButton *cardDatabasePathButton = new QPushButton("..."); QPushButton *cardDatabasePathButton = new QPushButton("...");
connect(cardDatabasePathButton, SIGNAL(clicked()), this, SLOT(cardDatabasePathButtonClicked())); connect(cardDatabasePathButton, SIGNAL(clicked()), this, SLOT(cardDatabasePathButtonClicked()));
@ -81,6 +74,7 @@ GeneralSettingsPage::GeneralSettingsPage()
pathsGrid->addWidget(cardBackgroundPathEdit, 3, 1); pathsGrid->addWidget(cardBackgroundPathEdit, 3, 1);
pathsGrid->addWidget(cardBackgroundPathButton, 3, 2); pathsGrid->addWidget(cardBackgroundPathButton, 3, 2);
*/ */
pathsGroupBox = new QGroupBox;
pathsGroupBox->setLayout(pathsGrid); pathsGroupBox->setLayout(pathsGrid);
QVBoxLayout *mainLayout = new QVBoxLayout; QVBoxLayout *mainLayout = new QVBoxLayout;
@ -115,10 +109,9 @@ void GeneralSettingsPage::deckPathButtonClicked()
QString path = QFileDialog::getExistingDirectory(this, tr("Choose path")); QString path = QFileDialog::getExistingDirectory(this, tr("Choose path"));
if (path.isEmpty()) if (path.isEmpty())
return; return;
QSettings settings;
settings.beginGroup("paths");
settings.setValue("decks", path);
deckPathEdit->setText(path); deckPathEdit->setText(path);
settingsCache->setDeckPath(path);
} }
void GeneralSettingsPage::picsPathButtonClicked() void GeneralSettingsPage::picsPathButtonClicked()
@ -126,12 +119,9 @@ void GeneralSettingsPage::picsPathButtonClicked()
QString path = QFileDialog::getExistingDirectory(this, tr("Choose path")); QString path = QFileDialog::getExistingDirectory(this, tr("Choose path"));
if (path.isEmpty()) if (path.isEmpty())
return; return;
QSettings settings;
settings.beginGroup("paths");
settings.setValue("pics", path);
picsPathEdit->setText(path);
emit picsPathChanged(path); picsPathEdit->setText(path);
settingsCache->setPicsPath(path);
} }
void GeneralSettingsPage::cardDatabasePathButtonClicked() void GeneralSettingsPage::cardDatabasePathButtonClicked()
@ -139,12 +129,9 @@ void GeneralSettingsPage::cardDatabasePathButtonClicked()
QString path = QFileDialog::getOpenFileName(this, tr("Choose path")); QString path = QFileDialog::getOpenFileName(this, tr("Choose path"));
if (path.isEmpty()) if (path.isEmpty())
return; return;
QSettings settings;
settings.beginGroup("paths");
settings.setValue("carddatabase", path);
cardDatabasePathEdit->setText(path);
emit cardDatabasePathChanged(path); cardDatabasePathEdit->setText(path);
settingsCache->setCardDatabasePath(path);
} }
void GeneralSettingsPage::cardBackgroundPathButtonClicked() void GeneralSettingsPage::cardBackgroundPathButtonClicked()
@ -163,19 +150,7 @@ void GeneralSettingsPage::cardBackgroundPathButtonClicked()
void GeneralSettingsPage::languageBoxChanged(int index) void GeneralSettingsPage::languageBoxChanged(int index)
{ {
QString qmFile = languageBox->itemData(index).toString(); QString qmFile = languageBox->itemData(index).toString();
QSettings settings; settingsCache->setLang(qmFile);
settings.beginGroup("personal");
settings.setValue("lang", qmFile);
emit changeLanguage(qmFile);
}
void GeneralSettingsPage::picDownloadCheckBoxChanged(int state)
{
QSettings settings;
settings.beginGroup("personal");
settings.setValue("picturedownload", state);
emit picDownloadChanged(state);
} }
void GeneralSettingsPage::retranslateUi() void GeneralSettingsPage::retranslateUi()
@ -230,13 +205,9 @@ AppearanceSettingsPage::AppearanceSettingsPage()
zoneBgGroupBox->setLayout(zoneBgGrid); zoneBgGroupBox->setLayout(zoneBgGrid);
tableGroupBox = new QGroupBox; tableGroupBox = new QGroupBox;
settings.beginGroup("table");
economicGridCheckBox = new QCheckBox; economicGridCheckBox = new QCheckBox;
economicGridCheckBox->setChecked(settings.value("economic", 1).toInt()); economicGridCheckBox->setChecked(settingsCache->getEconomicGrid());
connect(economicGridCheckBox, SIGNAL(stateChanged(int)), this, SLOT(economicGridCheckBoxChanged(int))); connect(economicGridCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setEconomicGrid(int)));
settings.endGroup();
QGridLayout *tableGrid = new QGridLayout; QGridLayout *tableGrid = new QGridLayout;
tableGrid->addWidget(economicGridCheckBox, 0, 0, 1, 2); tableGrid->addWidget(economicGridCheckBox, 0, 0, 1, 2);
@ -319,15 +290,6 @@ void AppearanceSettingsPage::playerAreaBgButtonClicked()
emit playerAreaBgChanged(path); emit playerAreaBgChanged(path);
} }
void AppearanceSettingsPage::economicGridCheckBoxChanged(int state)
{
QSettings settings;
settings.beginGroup("table");
settings.setValue("economic", state);
emit economicGridChanged(state);
}
void AppearanceSettingsPage::zoneViewSortingCheckBoxChanged(int state) void AppearanceSettingsPage::zoneViewSortingCheckBoxChanged(int state)
{ {
QSettings settings; QSettings settings;
@ -337,6 +299,30 @@ void AppearanceSettingsPage::zoneViewSortingCheckBoxChanged(int state)
emit zoneViewSortingChanged(state); emit zoneViewSortingChanged(state);
} }
UserInterfaceSettingsPage::UserInterfaceSettingsPage()
{
doubleClickToPlayCheckBox = new QCheckBox;
doubleClickToPlayCheckBox->setChecked(settingsCache->getDoubleClickToPlay());
connect(doubleClickToPlayCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setDoubleClickToPlay(int)));
QGridLayout *generalGrid = new QGridLayout;
generalGrid->addWidget(doubleClickToPlayCheckBox, 0, 0);
generalGroupBox = new QGroupBox;
generalGroupBox->setLayout(generalGrid);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(generalGroupBox);
setLayout(mainLayout);
}
void UserInterfaceSettingsPage::retranslateUi()
{
generalGroupBox->setTitle(tr("General interface settings"));
doubleClickToPlayCheckBox->setText(tr("&Double-click cards to play them (instead of single-click)"));
}
MessagesSettingsPage::MessagesSettingsPage() MessagesSettingsPage::MessagesSettingsPage()
{ {
aAdd = new QAction(this); aAdd = new QAction(this);
@ -401,6 +387,8 @@ void MessagesSettingsPage::retranslateUi()
DlgSettings::DlgSettings(QWidget *parent) DlgSettings::DlgSettings(QWidget *parent)
: QDialog(parent) : QDialog(parent)
{ {
connect(settingsCache, SIGNAL(langChanged()), this, SLOT(updateLanguage()));
contentsWidget = new QListWidget; contentsWidget = new QListWidget;
contentsWidget->setViewMode(QListView::IconMode); contentsWidget->setViewMode(QListView::IconMode);
contentsWidget->setIconSize(QSize(96, 84)); contentsWidget->setIconSize(QSize(96, 84));
@ -410,13 +398,9 @@ DlgSettings::DlgSettings(QWidget *parent)
contentsWidget->setSpacing(12); contentsWidget->setSpacing(12);
pagesWidget = new QStackedWidget; pagesWidget = new QStackedWidget;
GeneralSettingsPage *general = new GeneralSettingsPage; pagesWidget->addWidget(new GeneralSettingsPage);
connect(general, SIGNAL(picsPathChanged(const QString &)), db, SLOT(updatePicsPath(const QString &)));
connect(general, SIGNAL(cardDatabasePathChanged(const QString &)), db, SLOT(updateDatabasePath(const QString &)));
connect(general, SIGNAL(changeLanguage(const QString &)), this, SLOT(changeLanguage(const QString &)));
connect(general, SIGNAL(picDownloadChanged(int)), db, SLOT(updatePicDownload(int)));
pagesWidget->addWidget(general);
pagesWidget->addWidget(new AppearanceSettingsPage); pagesWidget->addWidget(new AppearanceSettingsPage);
pagesWidget->addWidget(new UserInterfaceSettingsPage);
pagesWidget->addWidget(new MessagesSettingsPage); pagesWidget->addWidget(new MessagesSettingsPage);
closeButton = new QPushButton; closeButton = new QPushButton;
@ -457,6 +441,11 @@ void DlgSettings::createIcons()
appearanceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); appearanceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
appearanceButton->setIcon(QIcon(":/resources/icon_config_appearance.svg")); appearanceButton->setIcon(QIcon(":/resources/icon_config_appearance.svg"));
userInterfaceButton = new QListWidgetItem(contentsWidget);
userInterfaceButton->setTextAlignment(Qt::AlignHCenter);
userInterfaceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
userInterfaceButton->setIcon(QIcon(":/resources/icon_config_appearance.svg"));
messagesButton = new QListWidgetItem(contentsWidget); messagesButton = new QListWidgetItem(contentsWidget);
messagesButton->setTextAlignment(Qt::AlignHCenter); messagesButton->setTextAlignment(Qt::AlignHCenter);
messagesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); messagesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
@ -473,10 +462,10 @@ void DlgSettings::changePage(QListWidgetItem *current, QListWidgetItem *previous
pagesWidget->setCurrentIndex(contentsWidget->row(current)); pagesWidget->setCurrentIndex(contentsWidget->row(current));
} }
void DlgSettings::changeLanguage(const QString &qmFile) void DlgSettings::updateLanguage()
{ {
qApp->removeTranslator(translator); qApp->removeTranslator(translator);
translator->load(qmFile); translator->load(settingsCache->getLang());
qApp->installTranslator(translator); qApp->installTranslator(translator);
} }
@ -493,6 +482,7 @@ void DlgSettings::retranslateUi()
generalButton->setText(tr("General")); generalButton->setText(tr("General"));
appearanceButton->setText(tr("Appearance")); appearanceButton->setText(tr("Appearance"));
userInterfaceButton->setText(tr("User interface"));
messagesButton->setText(tr("Messages")); messagesButton->setText(tr("Messages"));
closeButton->setText(tr("&Close")); closeButton->setText(tr("&Close"));

View file

@ -30,7 +30,6 @@ private slots:
void cardDatabasePathButtonClicked(); void cardDatabasePathButtonClicked();
void cardBackgroundPathButtonClicked(); void cardBackgroundPathButtonClicked();
void languageBoxChanged(int index); void languageBoxChanged(int index);
void picDownloadCheckBoxChanged(int state);
signals: signals:
void picsPathChanged(const QString &path); void picsPathChanged(const QString &path);
void cardDatabasePathChanged(const QString &path); void cardDatabasePathChanged(const QString &path);
@ -53,13 +52,11 @@ private slots:
void handBgButtonClicked(); void handBgButtonClicked();
void tableBgButtonClicked(); void tableBgButtonClicked();
void playerAreaBgButtonClicked(); void playerAreaBgButtonClicked();
void economicGridCheckBoxChanged(int state);
void zoneViewSortingCheckBoxChanged(int state); void zoneViewSortingCheckBoxChanged(int state);
signals: signals:
void handBgChanged(const QString &path); void handBgChanged(const QString &path);
void tableBgChanged(const QString &path); void tableBgChanged(const QString &path);
void playerAreaBgChanged(const QString &path); void playerAreaBgChanged(const QString &path);
void economicGridChanged(int state);
void zoneViewSortingChanged(int state); void zoneViewSortingChanged(int state);
private: private:
QLabel *handBgLabel, *tableBgLabel, *playerAreaBgLabel; QLabel *handBgLabel, *tableBgLabel, *playerAreaBgLabel;
@ -71,6 +68,16 @@ public:
void retranslateUi(); void retranslateUi();
}; };
class UserInterfaceSettingsPage : public AbstractSettingsPage {
Q_OBJECT
private:
QCheckBox *doubleClickToPlayCheckBox;
QGroupBox *generalGroupBox;
public:
UserInterfaceSettingsPage();
void retranslateUi();
};
class MessagesSettingsPage : public AbstractSettingsPage { class MessagesSettingsPage : public AbstractSettingsPage {
Q_OBJECT Q_OBJECT
public: public:
@ -92,11 +99,11 @@ public:
DlgSettings(QWidget *parent = 0); DlgSettings(QWidget *parent = 0);
private slots: private slots:
void changePage(QListWidgetItem *current, QListWidgetItem *previous); void changePage(QListWidgetItem *current, QListWidgetItem *previous);
void changeLanguage(const QString &qmFile); void updateLanguage();
private: private:
QListWidget *contentsWidget; QListWidget *contentsWidget;
QStackedWidget *pagesWidget; QStackedWidget *pagesWidget;
QListWidgetItem *generalButton, *appearanceButton, *messagesButton; QListWidgetItem *generalButton, *appearanceButton, *userInterfaceButton, *messagesButton;
QPushButton *closeButton; QPushButton *closeButton;
void createIcons(); void createIcons();
void retranslateUi(); void retranslateUi();

View file

@ -31,11 +31,13 @@
#include "main.h" #include "main.h"
#include "window_main.h" #include "window_main.h"
#include "carddatabase.h" #include "carddatabase.h"
#include "settingscache.h"
//Q_IMPORT_PLUGIN(qjpeg) //Q_IMPORT_PLUGIN(qjpeg)
CardDatabase *db; CardDatabase *db;
QTranslator *translator; QTranslator *translator;
SettingsCache *settingsCache;
void myMessageOutput(QtMsgType /*type*/, const char *msg) void myMessageOutput(QtMsgType /*type*/, const char *msg)
{ {
@ -57,6 +59,7 @@ int main(int argc, char *argv[])
QCoreApplication::setOrganizationDomain("cockatrice.de"); QCoreApplication::setOrganizationDomain("cockatrice.de");
QCoreApplication::setApplicationName("Cockatrice"); QCoreApplication::setApplicationName("Cockatrice");
settingsCache = new SettingsCache;
db = new CardDatabase; db = new CardDatabase;
QString localeName;// = QLocale::system().name(); QString localeName;// = QLocale::system().name();
@ -65,9 +68,7 @@ int main(int argc, char *argv[])
app.installTranslator(&qtTranslator); app.installTranslator(&qtTranslator);
translator = new QTranslator; translator = new QTranslator;
QSettings settings; QString lang = settingsCache->getLang();
settings.beginGroup("personal");
QString lang = settings.value("lang").toString();
if (lang.isEmpty()) if (lang.isEmpty())
translator->load("cockatrice_" + localeName, ":/translations", QString(), ".qm"); translator->load("cockatrice_" + localeName, ":/translations", QString(), ".qm");
else else
@ -88,6 +89,7 @@ int main(int argc, char *argv[])
int retval = app.exec(); int retval = app.exec();
delete db; delete db;
delete settingsCache;
return retval; return retval;
} }

View file

@ -1,8 +1,14 @@
#include "pingpixmapgenerator.h" #include "pingpixmapgenerator.h"
#include <QPainter> #include <QPainter>
QMap<int, QPixmap> PingPixmapGenerator::pmCache;
QPixmap PingPixmapGenerator::generatePixmap(int size, int value, int max) QPixmap PingPixmapGenerator::generatePixmap(int size, int value, int max)
{ {
int key = size * 1000000 + max * 1000 + value;
if (pmCache.contains(key))
return pmCache.value(key);
QPixmap pixmap(size, size); QPixmap pixmap(size, size);
pixmap.fill(Qt::transparent); pixmap.fill(Qt::transparent);
QPainter painter(&pixmap); QPainter painter(&pixmap);
@ -17,5 +23,7 @@ QPixmap PingPixmapGenerator::generatePixmap(int size, int value, int max)
g.setColorAt(1, Qt::transparent); g.setColorAt(1, Qt::transparent);
painter.fillRect(0, 0, pixmap.width(), pixmap.height(), QBrush(g)); painter.fillRect(0, 0, pixmap.width(), pixmap.height(), QBrush(g));
pmCache.insert(key, pixmap);
return pixmap; return pixmap;
} }

View file

@ -2,8 +2,11 @@
#define PINGPIXMAPGENERATOR_H #define PINGPIXMAPGENERATOR_H
#include <QPixmap> #include <QPixmap>
#include <QMap>
class PingPixmapGenerator { class PingPixmapGenerator {
private:
static QMap<int, QPixmap> pmCache;
public: public:
static QPixmap generatePixmap(int size, int value, int max); static QPixmap generatePixmap(int size, int value, int max);
}; };

View file

@ -0,0 +1,63 @@
#include "settingscache.h"
#include <QSettings>
SettingsCache::SettingsCache()
{
settings = new QSettings;
lang = settings->value("personal/lang").toString();
deckPath = settings->value("paths/decks").toString();
picsPath = settings->value("paths/pics").toString();
cardDatabasePath = settings->value("paths/carddatabase").toString();
picDownload = settings->value("personal/picturedownload", 0).toInt();
doubleClickToPlay = settings->value("interface/doubleclicktoplay", 1).toInt();
economicGrid = settings->value("table/economic", 0).toInt();
}
void SettingsCache::setLang(const QString &_lang)
{
lang = _lang;
settings->setValue("personal/lang", lang);
emit langChanged();
}
void SettingsCache::setDeckPath(const QString &_deckPath)
{
deckPath = _deckPath;
settings->setValue("paths/decks", deckPath);
}
void SettingsCache::setPicsPath(const QString &_picsPath)
{
picsPath = _picsPath;
settings->setValue("paths/pics", picsPath);
emit picsPathChanged();
}
void SettingsCache::setCardDatabasePath(const QString &_cardDatabasePath)
{
cardDatabasePath = _cardDatabasePath;
settings->setValue("paths/carddatabase", cardDatabasePath);
emit cardDatabasePathChanged();
}
void SettingsCache::setPicDownload(int _picDownload)
{
picDownload = _picDownload;
settings->setValue("personal/picturedownload", picDownload);
emit picDownloadChanged();
}
void SettingsCache::setDoubleClickToPlay(int _doubleClickToPlay)
{
doubleClickToPlay = _doubleClickToPlay;
settings->setValue("interface/doubleclicktoplay", doubleClickToPlay);
}
void SettingsCache::setEconomicGrid(int _economicGrid)
{
economicGrid = _economicGrid;
settings->setValue("table/economic", economicGrid);
}

View file

@ -0,0 +1,44 @@
#ifndef SETTINGSCACHE_H
#define SETTINGSCACHE_H
#include <QObject>
class QSettings;
class SettingsCache : public QObject {
Q_OBJECT
signals:
void langChanged();
void picsPathChanged();
void cardDatabasePathChanged();
void picDownloadChanged();
private:
QSettings *settings;
QString lang;
QString deckPath, picsPath, cardDatabasePath;
bool picDownload;
bool doubleClickToPlay;
bool economicGrid;
public:
SettingsCache();
QString getLang() const { return lang; }
QString getDeckPath() const { return deckPath; }
QString getPicsPath() const { return picsPath; }
QString getCardDatabasePath() const { return cardDatabasePath; }
bool getPicDownload() const { return picDownload; }
bool getDoubleClickToPlay() const { return doubleClickToPlay; }
bool getEconomicGrid() const { return economicGrid; }
public slots:
void setLang(const QString &_lang);
void setDeckPath(const QString &_deckPath);
void setPicsPath(const QString &_picsPath);
void setCardDatabasePath(const QString &_cardDatabasePath);
void setPicDownload(int _picDownload);
void setDoubleClickToPlay(int _doubleClickToPlay);
void setEconomicGrid(int _economicGrid);
};
extern SettingsCache *settingsCache;
#endif

View file

@ -49,6 +49,7 @@ TabGame::TabGame(Client *_client, int _gameId, const QString &_gameDescription,
cardInfo = new CardInfoWidget; cardInfo = new CardInfoWidget;
playerListWidget = new PlayerListWidget; playerListWidget = new PlayerListWidget;
playerListWidget->setFocusPolicy(Qt::NoFocus);
messageLog = new MessageLogWidget; messageLog = new MessageLogWidget;
sayLabel = new QLabel; sayLabel = new QLabel;
sayEdit = new QLineEdit; sayEdit = new QLineEdit;

View file

@ -27,49 +27,49 @@
<context> <context>
<name>AppearanceSettingsPage</name> <name>AppearanceSettingsPage</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="271"/> <location filename="../src/dlg_settings.cpp" line="242"/>
<source>Zone background pictures</source> <source>Zone background pictures</source>
<translation>Hintergrundbilder für Kartenzonen</translation> <translation>Hintergrundbilder für Kartenzonen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="272"/> <location filename="../src/dlg_settings.cpp" line="243"/>
<source>Path to hand background:</source> <source>Path to hand background:</source>
<translation>Hintergrundbild für die Hand:</translation> <translation>Hintergrundbild für die Hand:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="273"/> <location filename="../src/dlg_settings.cpp" line="244"/>
<source>Path to table background:</source> <source>Path to table background:</source>
<translation>Hintergrundbild für das Spielfeld:</translation> <translation>Hintergrundbild für das Spielfeld:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="274"/> <location filename="../src/dlg_settings.cpp" line="245"/>
<source>Path to player info background:</source> <source>Path to player info background:</source>
<translation>Hintergrundbild für den Spielerbereich:</translation> <translation>Hintergrundbild für den Spielerbereich:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="276"/> <location filename="../src/dlg_settings.cpp" line="247"/>
<source>Table grid layout</source> <source>Table grid layout</source>
<translation>Spielfeldraster</translation> <translation>Spielfeldraster</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="277"/> <location filename="../src/dlg_settings.cpp" line="248"/>
<source>Economic layout</source> <source>Economic layout</source>
<translation>Platzsparende Anordnung</translation> <translation>Platzsparende Anordnung</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="279"/> <location filename="../src/dlg_settings.cpp" line="250"/>
<source>Zone view layout</source> <source>Zone view layout</source>
<translation>Aussehen des Zonenbetrachters</translation> <translation>Aussehen des Zonenbetrachters</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="280"/> <location filename="../src/dlg_settings.cpp" line="251"/>
<source>Sort alphabetically by default</source> <source>Sort alphabetically by default</source>
<translation>standardmäßig alphabetisch sortieren</translation> <translation>standardmäßig alphabetisch sortieren</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="285"/> <location filename="../src/dlg_settings.cpp" line="256"/>
<location filename="../src/dlg_settings.cpp" line="298"/> <location filename="../src/dlg_settings.cpp" line="269"/>
<location filename="../src/dlg_settings.cpp" line="311"/> <location filename="../src/dlg_settings.cpp" line="282"/>
<source>Choose path</source> <source>Choose path</source>
<translation>Pfad auswählen</translation> <translation>Pfad auswählen</translation>
</message> </message>
@ -555,27 +555,32 @@
<context> <context>
<name>DlgSettings</name> <name>DlgSettings</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="492"/> <location filename="../src/dlg_settings.cpp" line="481"/>
<source>Settings</source> <source>Settings</source>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="494"/> <location filename="../src/dlg_settings.cpp" line="483"/>
<source>General</source> <source>General</source>
<translation>Allgemeines</translation> <translation>Allgemeines</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="495"/> <location filename="../src/dlg_settings.cpp" line="484"/>
<source>Appearance</source> <source>Appearance</source>
<translation>Erscheinungsbild</translation> <translation>Erscheinungsbild</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="496"/> <location filename="../src/dlg_settings.cpp" line="485"/>
<source>User interface</source>
<translation>Bedienung</translation>
</message>
<message>
<location filename="../src/dlg_settings.cpp" line="486"/>
<source>Messages</source> <source>Messages</source>
<translation>Nachrichten</translation> <translation>Nachrichten</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="498"/> <location filename="../src/dlg_settings.cpp" line="488"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation>S&amp;chließen</translation> <translation>S&amp;chließen</translation>
</message> </message>
@ -958,51 +963,51 @@
<context> <context>
<name>GeneralSettingsPage</name> <name>GeneralSettingsPage</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="115"/> <location filename="../src/dlg_settings.cpp" line="109"/>
<location filename="../src/dlg_settings.cpp" line="126"/> <location filename="../src/dlg_settings.cpp" line="119"/>
<location filename="../src/dlg_settings.cpp" line="129"/>
<location filename="../src/dlg_settings.cpp" line="139"/> <location filename="../src/dlg_settings.cpp" line="139"/>
<location filename="../src/dlg_settings.cpp" line="152"/>
<source>Choose path</source> <source>Choose path</source>
<translation>Pfad auswählen</translation> <translation>Pfad auswählen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="183"/> <location filename="../src/dlg_settings.cpp" line="158"/>
<source>Personal settings</source> <source>Personal settings</source>
<translation>Persönliche Einstellungen</translation> <translation>Persönliche Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="184"/> <location filename="../src/dlg_settings.cpp" line="159"/>
<source>Language:</source> <source>Language:</source>
<translation>Sprache:</translation> <translation>Sprache:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="185"/> <location filename="../src/dlg_settings.cpp" line="160"/>
<source>Download card pictures on the fly</source> <source>Download card pictures on the fly</source>
<translation>Kartenbilder dynamisch herunterladen</translation> <translation>Kartenbilder dynamisch herunterladen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="186"/> <location filename="../src/dlg_settings.cpp" line="161"/>
<source>Paths</source> <source>Paths</source>
<translation>Pfade</translation> <translation>Pfade</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="187"/> <location filename="../src/dlg_settings.cpp" line="162"/>
<source>Decks directory:</source> <source>Decks directory:</source>
<translation>Verzeichnis mit Decklisten:</translation> <translation>Verzeichnis mit Decklisten:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="188"/> <location filename="../src/dlg_settings.cpp" line="163"/>
<source>Pictures directory:</source> <source>Pictures directory:</source>
<translation>Verzeichnis mit Bilddateien:</translation> <translation>Verzeichnis mit Bilddateien:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="189"/> <location filename="../src/dlg_settings.cpp" line="164"/>
<source>Path to card database:</source> <source>Path to card database:</source>
<translation>Pfad zur Kartendatenbank:</translation> <translation>Pfad zur Kartendatenbank:</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="22"/> <location filename="../src/dlg_settings.cpp" line="18"/>
<location filename="../src/dlg_settings.cpp" line="110"/> <location filename="../src/dlg_settings.cpp" line="104"/>
<source>English</source> <source>English</source>
<translation>Deutsch</translation> <translation>Deutsch</translation>
</message> </message>
@ -1731,12 +1736,12 @@
<context> <context>
<name>MessagesSettingsPage</name> <name>MessagesSettingsPage</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="397"/> <location filename="../src/dlg_settings.cpp" line="383"/>
<source>&amp;Add</source> <source>&amp;Add</source>
<translation>&amp;Hinzufügen</translation> <translation>&amp;Hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="398"/> <location filename="../src/dlg_settings.cpp" line="384"/>
<source>&amp;Remove</source> <source>&amp;Remove</source>
<translation>&amp;Entfernen</translation> <translation>&amp;Entfernen</translation>
</message> </message>
@ -1749,12 +1754,12 @@
<translation type="obsolete">Entfernen</translation> <translation type="obsolete">Entfernen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="380"/> <location filename="../src/dlg_settings.cpp" line="366"/>
<source>Add message</source> <source>Add message</source>
<translation>Nachricht hinzufügen</translation> <translation>Nachricht hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="380"/> <location filename="../src/dlg_settings.cpp" line="366"/>
<source>Message:</source> <source>Message:</source>
<translation>Nachricht:</translation> <translation>Nachricht:</translation>
</message> </message>
@ -2235,27 +2240,27 @@
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../../common/decklist.cpp" line="45"/> <location filename="../../common/decklist.cpp" line="80"/>
<source>Maindeck</source> <source>Maindeck</source>
<translation>Hauptdeck</translation> <translation>Hauptdeck</translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="47"/> <location filename="../../common/decklist.cpp" line="82"/>
<source>Sideboard</source> <source>Sideboard</source>
<translation>Sideboard</translation> <translation>Sideboard</translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="195"/> <location filename="../../common/decklist.cpp" line="230"/>
<source>Cockatrice decks (*.cod)</source> <source>Cockatrice decks (*.cod)</source>
<translation>Cockatrice Decks (*.cod)</translation> <translation>Cockatrice Decks (*.cod)</translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="196"/> <location filename="../../common/decklist.cpp" line="231"/>
<source>Plain text decks (*.dec *.mwDeck)</source> <source>Plain text decks (*.dec *.mwDeck)</source>
<translation>Text Decks (*.dec *.mwDeck)</translation> <translation>Text Decks (*.dec *.mwDeck)</translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="197"/> <location filename="../../common/decklist.cpp" line="232"/>
<source>All files (*.*)</source> <source>All files (*.*)</source>
<translation>Alle Dateien (*.*)</translation> <translation>Alle Dateien (*.*)</translation>
</message> </message>
@ -2393,117 +2398,117 @@ Bitte geben Sie einen Namen ein:</translation>
<context> <context>
<name>TabGame</name> <name>TabGame</name>
<message> <message>
<location filename="../src/tab_game.cpp" line="134"/> <location filename="../src/tab_game.cpp" line="136"/>
<source>&amp;Game</source> <source>&amp;Game</source>
<translation>Spi&amp;el</translation> <translation>Spi&amp;el</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="135"/> <location filename="../src/tab_game.cpp" line="137"/>
<source>Next &amp;phase</source> <source>Next &amp;phase</source>
<translation>Nächste &amp;Phase</translation> <translation>Nächste &amp;Phase</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="136"/> <location filename="../src/tab_game.cpp" line="138"/>
<source>Ctrl+Space</source> <source>Ctrl+Space</source>
<translation>Ctrl+Space</translation> <translation>Ctrl+Space</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="137"/> <location filename="../src/tab_game.cpp" line="139"/>
<source>Next &amp;turn</source> <source>Next &amp;turn</source>
<translation>Nächster &amp;Zug</translation> <translation>Nächster &amp;Zug</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="138"/> <location filename="../src/tab_game.cpp" line="140"/>
<source>Ctrl+Return</source> <source>Ctrl+Return</source>
<translation>Ctrl+Return</translation> <translation>Ctrl+Return</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="138"/> <location filename="../src/tab_game.cpp" line="140"/>
<source>Ctrl+Enter</source> <source>Ctrl+Enter</source>
<translation>Ctrl+Enter</translation> <translation>Ctrl+Enter</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="139"/> <location filename="../src/tab_game.cpp" line="141"/>
<source>&amp;Remove all local arrows</source> <source>&amp;Remove all local arrows</source>
<translation>&amp;Lokale Pfeile entfernen</translation> <translation>&amp;Lokale Pfeile entfernen</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="140"/> <location filename="../src/tab_game.cpp" line="142"/>
<source>Ctrl+R</source> <source>Ctrl+R</source>
<translation>Ctrl+R</translation> <translation>Ctrl+R</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="141"/> <location filename="../src/tab_game.cpp" line="143"/>
<source>&amp;Concede</source> <source>&amp;Concede</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="142"/> <location filename="../src/tab_game.cpp" line="144"/>
<source>F2</source> <source>F2</source>
<translation>F2</translation> <translation>F2</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="143"/> <location filename="../src/tab_game.cpp" line="145"/>
<source>&amp;Leave game</source> <source>&amp;Leave game</source>
<translation>Spiel ver&amp;lassen</translation> <translation>Spiel ver&amp;lassen</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="145"/> <location filename="../src/tab_game.cpp" line="147"/>
<source>Load &amp;local deck</source> <source>Load &amp;local deck</source>
<translation>&amp;Lokales Deck laden</translation> <translation>&amp;Lokales Deck laden</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="146"/> <location filename="../src/tab_game.cpp" line="148"/>
<source>Load d&amp;eck from server</source> <source>Load d&amp;eck from server</source>
<translation>Deck vom Server l&amp;aden</translation> <translation>Deck vom Server l&amp;aden</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="147"/> <location filename="../src/tab_game.cpp" line="149"/>
<source>S&amp;tart game</source> <source>S&amp;tart game</source>
<translation>Spiel s&amp;tarten</translation> <translation>Spiel s&amp;tarten</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="148"/> <location filename="../src/tab_game.cpp" line="150"/>
<source>&amp;Say:</source> <source>&amp;Say:</source>
<translation>&amp;Sagen:</translation> <translation>&amp;Sagen:</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="151"/> <location filename="../src/tab_game.cpp" line="153"/>
<source>Close most recent zone view</source> <source>Close most recent zone view</source>
<translation>Letzte Zonenansicht schließen</translation> <translation>Letzte Zonenansicht schließen</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="152"/> <location filename="../src/tab_game.cpp" line="154"/>
<source>Esc</source> <source>Esc</source>
<translation>Esc</translation> <translation>Esc</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="161"/> <location filename="../src/tab_game.cpp" line="163"/>
<source>Concede</source> <source>Concede</source>
<translation>Aufgeben</translation> <translation>Aufgeben</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="161"/> <location filename="../src/tab_game.cpp" line="163"/>
<source>Are you sure you want to concede this game?</source> <source>Are you sure you want to concede this game?</source>
<translation>Sind Sie sicher, dass Sie das Spiel aufgeben möchten?</translation> <translation>Sind Sie sicher, dass Sie das Spiel aufgeben möchten?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="169"/> <location filename="../src/tab_game.cpp" line="171"/>
<source>Leave game</source> <source>Leave game</source>
<translation>Spiel verlassen</translation> <translation>Spiel verlassen</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="169"/> <location filename="../src/tab_game.cpp" line="171"/>
<source>Are you sure you want to leave this game?</source> <source>Are you sure you want to leave this game?</source>
<translation>Sind Sie sicher, dass Sie das Spiel verlassen möchten?</translation> <translation>Sind Sie sicher, dass Sie das Spiel verlassen möchten?</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="442"/> <location filename="../src/tab_game.cpp" line="444"/>
<source>Load deck</source> <source>Load deck</source>
<translation>Deck laden</translation> <translation>Deck laden</translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.h" line="108"/> <location filename="../src/tab_game.h" line="109"/>
<source>Game %1: %2</source> <source>Game %1: %2</source>
<translation>Spiel %1: %2</translation> <translation>Spiel %1: %2</translation>
</message> </message>
@ -2531,6 +2536,19 @@ Bitte geben Sie einen Namen ein:</translation>
<translation type="obsolete">Spiel %1</translation> <translation type="obsolete">Spiel %1</translation>
</message> </message>
</context> </context>
<context>
<name>UserInterfaceSettingsPage</name>
<message>
<location filename="../src/dlg_settings.cpp" line="322"/>
<source>General interface settings</source>
<translation>Allgemeine Bedienung</translation>
</message>
<message>
<location filename="../src/dlg_settings.cpp" line="323"/>
<source>&amp;Double-click cards to play them (instead of single-click)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>WndDeckEditor</name> <name>WndDeckEditor</name>
<message> <message>

View file

@ -4,49 +4,49 @@
<context> <context>
<name>AppearanceSettingsPage</name> <name>AppearanceSettingsPage</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="271"/> <location filename="../src/dlg_settings.cpp" line="242"/>
<source>Zone background pictures</source> <source>Zone background pictures</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="272"/> <location filename="../src/dlg_settings.cpp" line="243"/>
<source>Path to hand background:</source> <source>Path to hand background:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="273"/> <location filename="../src/dlg_settings.cpp" line="244"/>
<source>Path to table background:</source> <source>Path to table background:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="274"/> <location filename="../src/dlg_settings.cpp" line="245"/>
<source>Path to player info background:</source> <source>Path to player info background:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="276"/> <location filename="../src/dlg_settings.cpp" line="247"/>
<source>Table grid layout</source> <source>Table grid layout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="277"/> <location filename="../src/dlg_settings.cpp" line="248"/>
<source>Economic layout</source> <source>Economic layout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="279"/> <location filename="../src/dlg_settings.cpp" line="250"/>
<source>Zone view layout</source> <source>Zone view layout</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="280"/> <location filename="../src/dlg_settings.cpp" line="251"/>
<source>Sort alphabetically by default</source> <source>Sort alphabetically by default</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="285"/> <location filename="../src/dlg_settings.cpp" line="256"/>
<location filename="../src/dlg_settings.cpp" line="298"/> <location filename="../src/dlg_settings.cpp" line="269"/>
<location filename="../src/dlg_settings.cpp" line="311"/> <location filename="../src/dlg_settings.cpp" line="282"/>
<source>Choose path</source> <source>Choose path</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -448,27 +448,32 @@
<context> <context>
<name>DlgSettings</name> <name>DlgSettings</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="492"/> <location filename="../src/dlg_settings.cpp" line="481"/>
<source>Settings</source> <source>Settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="494"/> <location filename="../src/dlg_settings.cpp" line="483"/>
<source>General</source> <source>General</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="495"/> <location filename="../src/dlg_settings.cpp" line="484"/>
<source>Appearance</source> <source>Appearance</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="496"/> <location filename="../src/dlg_settings.cpp" line="485"/>
<source>User interface</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/dlg_settings.cpp" line="486"/>
<source>Messages</source> <source>Messages</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="498"/> <location filename="../src/dlg_settings.cpp" line="488"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -585,51 +590,51 @@
<context> <context>
<name>GeneralSettingsPage</name> <name>GeneralSettingsPage</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="115"/> <location filename="../src/dlg_settings.cpp" line="109"/>
<location filename="../src/dlg_settings.cpp" line="126"/> <location filename="../src/dlg_settings.cpp" line="119"/>
<location filename="../src/dlg_settings.cpp" line="129"/>
<location filename="../src/dlg_settings.cpp" line="139"/> <location filename="../src/dlg_settings.cpp" line="139"/>
<location filename="../src/dlg_settings.cpp" line="152"/>
<source>Choose path</source> <source>Choose path</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="183"/> <location filename="../src/dlg_settings.cpp" line="158"/>
<source>Personal settings</source> <source>Personal settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="184"/> <location filename="../src/dlg_settings.cpp" line="159"/>
<source>Language:</source> <source>Language:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="185"/> <location filename="../src/dlg_settings.cpp" line="160"/>
<source>Download card pictures on the fly</source> <source>Download card pictures on the fly</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="186"/> <location filename="../src/dlg_settings.cpp" line="161"/>
<source>Paths</source> <source>Paths</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="187"/> <location filename="../src/dlg_settings.cpp" line="162"/>
<source>Decks directory:</source> <source>Decks directory:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="188"/> <location filename="../src/dlg_settings.cpp" line="163"/>
<source>Pictures directory:</source> <source>Pictures directory:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="189"/> <location filename="../src/dlg_settings.cpp" line="164"/>
<source>Path to card database:</source> <source>Path to card database:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="22"/> <location filename="../src/dlg_settings.cpp" line="18"/>
<location filename="../src/dlg_settings.cpp" line="110"/> <location filename="../src/dlg_settings.cpp" line="104"/>
<source>English</source> <source>English</source>
<translation>English</translation> <translation>English</translation>
</message> </message>
@ -1066,22 +1071,22 @@
<context> <context>
<name>MessagesSettingsPage</name> <name>MessagesSettingsPage</name>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="397"/> <location filename="../src/dlg_settings.cpp" line="383"/>
<source>&amp;Add</source> <source>&amp;Add</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="398"/> <location filename="../src/dlg_settings.cpp" line="384"/>
<source>&amp;Remove</source> <source>&amp;Remove</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="380"/> <location filename="../src/dlg_settings.cpp" line="366"/>
<source>Add message</source> <source>Add message</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/dlg_settings.cpp" line="380"/> <location filename="../src/dlg_settings.cpp" line="366"/>
<source>Message:</source> <source>Message:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1506,27 +1511,27 @@
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../../common/decklist.cpp" line="45"/> <location filename="../../common/decklist.cpp" line="80"/>
<source>Maindeck</source> <source>Maindeck</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="47"/> <location filename="../../common/decklist.cpp" line="82"/>
<source>Sideboard</source> <source>Sideboard</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="195"/> <location filename="../../common/decklist.cpp" line="230"/>
<source>Cockatrice decks (*.cod)</source> <source>Cockatrice decks (*.cod)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="196"/> <location filename="../../common/decklist.cpp" line="231"/>
<source>Plain text decks (*.dec *.mwDeck)</source> <source>Plain text decks (*.dec *.mwDeck)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../common/decklist.cpp" line="197"/> <location filename="../../common/decklist.cpp" line="232"/>
<source>All files (*.*)</source> <source>All files (*.*)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1663,117 +1668,117 @@ Please enter a name:</source>
<context> <context>
<name>TabGame</name> <name>TabGame</name>
<message> <message>
<location filename="../src/tab_game.cpp" line="134"/> <location filename="../src/tab_game.cpp" line="136"/>
<source>&amp;Game</source> <source>&amp;Game</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="135"/> <location filename="../src/tab_game.cpp" line="137"/>
<source>Next &amp;phase</source> <source>Next &amp;phase</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="136"/> <location filename="../src/tab_game.cpp" line="138"/>
<source>Ctrl+Space</source> <source>Ctrl+Space</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="137"/> <location filename="../src/tab_game.cpp" line="139"/>
<source>Next &amp;turn</source> <source>Next &amp;turn</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="138"/> <location filename="../src/tab_game.cpp" line="140"/>
<source>Ctrl+Return</source> <source>Ctrl+Return</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="138"/> <location filename="../src/tab_game.cpp" line="140"/>
<source>Ctrl+Enter</source> <source>Ctrl+Enter</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="139"/> <location filename="../src/tab_game.cpp" line="141"/>
<source>&amp;Remove all local arrows</source> <source>&amp;Remove all local arrows</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="140"/> <location filename="../src/tab_game.cpp" line="142"/>
<source>Ctrl+R</source> <source>Ctrl+R</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="141"/> <location filename="../src/tab_game.cpp" line="143"/>
<source>&amp;Concede</source> <source>&amp;Concede</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="142"/> <location filename="../src/tab_game.cpp" line="144"/>
<source>F2</source> <source>F2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="143"/> <location filename="../src/tab_game.cpp" line="145"/>
<source>&amp;Leave game</source> <source>&amp;Leave game</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="145"/> <location filename="../src/tab_game.cpp" line="147"/>
<source>Load &amp;local deck</source> <source>Load &amp;local deck</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="146"/> <location filename="../src/tab_game.cpp" line="148"/>
<source>Load d&amp;eck from server</source> <source>Load d&amp;eck from server</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="147"/> <location filename="../src/tab_game.cpp" line="149"/>
<source>S&amp;tart game</source> <source>S&amp;tart game</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="148"/> <location filename="../src/tab_game.cpp" line="150"/>
<source>&amp;Say:</source> <source>&amp;Say:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="151"/> <location filename="../src/tab_game.cpp" line="153"/>
<source>Close most recent zone view</source> <source>Close most recent zone view</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="152"/> <location filename="../src/tab_game.cpp" line="154"/>
<source>Esc</source> <source>Esc</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="161"/> <location filename="../src/tab_game.cpp" line="163"/>
<source>Concede</source> <source>Concede</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="161"/> <location filename="../src/tab_game.cpp" line="163"/>
<source>Are you sure you want to concede this game?</source> <source>Are you sure you want to concede this game?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="169"/> <location filename="../src/tab_game.cpp" line="171"/>
<source>Leave game</source> <source>Leave game</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="169"/> <location filename="../src/tab_game.cpp" line="171"/>
<source>Are you sure you want to leave this game?</source> <source>Are you sure you want to leave this game?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.cpp" line="442"/> <location filename="../src/tab_game.cpp" line="444"/>
<source>Load deck</source> <source>Load deck</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/tab_game.h" line="108"/> <location filename="../src/tab_game.h" line="109"/>
<source>Game %1: %2</source> <source>Game %1: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1786,6 +1791,19 @@ Please enter a name:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>UserInterfaceSettingsPage</name>
<message>
<location filename="../src/dlg_settings.cpp" line="322"/>
<source>General interface settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/dlg_settings.cpp" line="323"/>
<source>&amp;Double-click cards to play them (instead of single-click)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>WndDeckEditor</name> <name>WndDeckEditor</name>
<message> <message>