From 4a34c52c8c9934ed646b6610f197b70e884d4e85 Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Fri, 11 Feb 2011 18:54:55 +0100 Subject: [PATCH] optionally display card names on cards even if they have a picture --- cockatrice/src/abstractcarditem.cpp | 20 +++++++++++++++----- cockatrice/src/dlg_settings.cpp | 20 +++++++++++++++++--- cockatrice/src/dlg_settings.h | 4 ++-- cockatrice/src/settingscache.cpp | 8 ++++++++ cockatrice/src/settingscache.h | 4 ++++ 5 files changed, 46 insertions(+), 10 deletions(-) diff --git a/cockatrice/src/abstractcarditem.cpp b/cockatrice/src/abstractcarditem.cpp index c5596cdf..366eb031 100644 --- a/cockatrice/src/abstractcarditem.cpp +++ b/cockatrice/src/abstractcarditem.cpp @@ -20,6 +20,7 @@ AbstractCardItem::AbstractCardItem(const QString &_name, Player *_owner, QGraphi setCacheMode(DeviceCoordinateCache); connect(info, SIGNAL(pixmapUpdated()), this, SLOT(pixmapUpdated())); + connect(settingsCache, SIGNAL(displayCardNamesChanged()), this, SLOT(update())); animationTimer = new QTimer(this); animationTimer->setSingleShot(false); @@ -68,9 +69,11 @@ void AbstractCardItem::transformPainter(QPainter *painter, const QSizeF &transla painter->setTransform(pixmapTransform); QFont f; - int fontSize = translatedSize.height() / 6; + int fontSize = translatedSize.height() / 8; if (fontSize < 9) fontSize = 9; + if (fontSize > 12) + fontSize = 12; f.setPixelSize(fontSize); painter->setFont(f); } @@ -120,12 +123,19 @@ void AbstractCardItem::paintPicture(QPainter *painter, int angle) pen.setWidth(2); painter->setPen(pen); painter->drawRect(QRectF(1, 1, CARD_WIDTH - 2, CARD_HEIGHT - 2)); - - transformPainter(painter, translatedSize, angle); - painter->setPen(textColor); - painter->drawText(QRectF(4 * scaleFactor, 4 * scaleFactor, translatedSize.width() - 8 * scaleFactor, translatedSize.height() - 8 * scaleFactor), Qt::AlignTop | Qt::AlignLeft | Qt::TextWrapAnywhere, name); } painter->restore(); + + if (!translatedPixmap || settingsCache->getDisplayCardNames()) { + painter->save(); + transformPainter(painter, translatedSize, angle); + painter->setPen(Qt::white); + painter->setBackground(Qt::black); + painter->setBackgroundMode(Qt::OpaqueMode); + painter->drawText(QRectF(3 * scaleFactor, 3 * scaleFactor, translatedSize.width() - 6 * scaleFactor, translatedSize.height() - 6 * scaleFactor), Qt::AlignTop | Qt::AlignLeft | Qt::TextWrapAnywhere, name); + } + + painter->restore(); } void AbstractCardItem::paint(QPainter *painter, const QStyleOptionGraphicsItem */*option*/, QWidget */*widget*/) diff --git a/cockatrice/src/dlg_settings.cpp b/cockatrice/src/dlg_settings.cpp index 46ffeff7..88bdfd98 100644 --- a/cockatrice/src/dlg_settings.cpp +++ b/cockatrice/src/dlg_settings.cpp @@ -218,6 +218,16 @@ AppearanceSettingsPage::AppearanceSettingsPage() zoneBgGroupBox = new QGroupBox; zoneBgGroupBox->setLayout(zoneBgGrid); + displayCardNamesCheckBox = new QCheckBox; + displayCardNamesCheckBox->setChecked(settingsCache->getDisplayCardNames()); + connect(displayCardNamesCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setDisplayCardNames(int))); + + QGridLayout *cardsGrid = new QGridLayout; + cardsGrid->addWidget(displayCardNamesCheckBox, 0, 0, 1, 2); + + cardsGroupBox = new QGroupBox; + cardsGroupBox->setLayout(cardsGrid); + horizontalHandCheckBox = new QCheckBox; horizontalHandCheckBox->setChecked(settingsCache->getHorizontalHand()); connect(horizontalHandCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setHorizontalHand(int))); @@ -254,6 +264,7 @@ AppearanceSettingsPage::AppearanceSettingsPage() QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(zoneBgGroupBox); + mainLayout->addWidget(cardsGroupBox); mainLayout->addWidget(handGroupBox); mainLayout->addWidget(tableGroupBox); mainLayout->addWidget(zoneViewGroupBox); @@ -270,6 +281,9 @@ void AppearanceSettingsPage::retranslateUi() playerAreaBgLabel->setText(tr("Path to player info background:")); cardBackPicturePathLabel->setText(tr("Path to picture of card back:")); + cardsGroupBox->setTitle(tr("Card rendering")); + displayCardNamesCheckBox->setText(tr("Display card names on cards having a picture")); + handGroupBox->setTitle(tr("Hand layout")); horizontalHandCheckBox->setText(tr("Display hand horizontally (wastes space)")); @@ -468,8 +482,8 @@ DlgSettings::DlgSettings(QWidget *parent) contentsWidget->setViewMode(QListView::IconMode); contentsWidget->setIconSize(QSize(96, 84)); contentsWidget->setMovement(QListView::Static); - contentsWidget->setMinimumWidth(115); - contentsWidget->setMaximumWidth(130); + contentsWidget->setMinimumWidth(130); + contentsWidget->setMaximumWidth(150); contentsWidget->setSpacing(12); pagesWidget = new QStackedWidget; @@ -500,7 +514,7 @@ DlgSettings::DlgSettings(QWidget *parent) retranslateUi(); - resize(700, 450); + resize(800, 450); } void DlgSettings::createIcons() diff --git a/cockatrice/src/dlg_settings.h b/cockatrice/src/dlg_settings.h index abdac076..70e231f2 100644 --- a/cockatrice/src/dlg_settings.h +++ b/cockatrice/src/dlg_settings.h @@ -67,8 +67,8 @@ signals: private: QLabel *handBgLabel, *stackBgLabel, *tableBgLabel, *playerAreaBgLabel, *cardBackPicturePathLabel; QLineEdit *handBgEdit, *stackBgEdit, *tableBgEdit, *playerAreaBgEdit, *cardBackPicturePathEdit; - QCheckBox *horizontalHandCheckBox, *invertVerticalCoordinateCheckBox, *zoneViewSortByNameCheckBox, *zoneViewSortByTypeCheckBox; - QGroupBox *zoneBgGroupBox, *handGroupBox, *tableGroupBox, *zoneViewGroupBox; + QCheckBox *displayCardNamesCheckBox, *horizontalHandCheckBox, *invertVerticalCoordinateCheckBox, *zoneViewSortByNameCheckBox, *zoneViewSortByTypeCheckBox; + QGroupBox *zoneBgGroupBox, *cardsGroupBox, *handGroupBox, *tableGroupBox, *zoneViewGroupBox; public: AppearanceSettingsPage(); void retranslateUi(); diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index 0ac6a94b..de7cb7bf 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -20,6 +20,7 @@ SettingsCache::SettingsCache() picDownload = settings->value("personal/picturedownload", true).toBool(); doubleClickToPlay = settings->value("interface/doubleclicktoplay", true).toBool(); cardInfoMinimized = settings->value("interface/cardinfominimized", false).toBool(); + displayCardNames = settings->value("cards/displaycardnames", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); tapAnimation = settings->value("cards/tapanimation", true).toBool(); @@ -109,6 +110,13 @@ void SettingsCache::setCardInfoMinimized(bool _cardInfoMinimized) settings->setValue("interface/cardinfominimized", cardInfoMinimized); } +void SettingsCache::setDisplayCardNames(int _displayCardNames) +{ + displayCardNames = _displayCardNames; + settings->setValue("cards/displaycardnames", displayCardNames); + emit displayCardNamesChanged(); +} + void SettingsCache::setHorizontalHand(int _horizontalHand) { horizontalHand = _horizontalHand; diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index 196d9bab..607d572d 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -17,6 +17,7 @@ signals: void playerBgPathChanged(); void cardBackPicturePathChanged(); void picDownloadChanged(); + void displayCardNamesChanged(); void horizontalHandChanged(); void invertVerticalCoordinateChanged(); private: @@ -28,6 +29,7 @@ private: bool picDownload; bool doubleClickToPlay; bool cardInfoMinimized; + bool displayCardNames; bool horizontalHand; bool invertVerticalCoordinate; bool tapAnimation; @@ -46,6 +48,7 @@ public: bool getPicDownload() const { return picDownload; } bool getDoubleClickToPlay() const { return doubleClickToPlay; } bool getCardInfoMinimized() const { return cardInfoMinimized; } + bool getDisplayCardNames() const { return displayCardNames; } bool getHorizontalHand() const { return horizontalHand; } bool getInvertVerticalCoordinate() const { return invertVerticalCoordinate; } bool getTapAnimation() const { return tapAnimation; } @@ -64,6 +67,7 @@ public slots: void setPicDownload(int _picDownload); void setDoubleClickToPlay(int _doubleClickToPlay); void setCardInfoMinimized(bool _cardInfoMinimized); + void setDisplayCardNames(int _displayCardNames); void setHorizontalHand(int _horizontalHand); void setInvertVerticalCoordinate(int _invertVerticalCoordinate); void setTapAnimation(int _tapAnimation);