Fix a crash (#3011)

This commit is contained in:
Zach H 2018-01-18 11:53:57 -05:00 committed by GitHub
parent 7a150c558d
commit dcc632e0d4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 28 deletions

View file

@ -10,8 +10,7 @@
#include <QSplitter> #include <QSplitter>
#include <QVBoxLayout> #include <QVBoxLayout>
CardFrame::CardFrame(const QString &cardName, QWidget *parent) CardFrame::CardFrame(const QString &cardName, QWidget *parent) : QTabWidget(parent), info(nullptr), cardTextOnly(false)
: QTabWidget(parent), info(nullptr), cardTextOnly(false)
{ {
setContentsMargins(3, 3, 3, 3); setContentsMargins(3, 3, 3, 3);
pic = new CardInfoPicture(); pic = new CardInfoPicture();
@ -83,6 +82,8 @@ void CardFrame::setViewMode(int mode)
splitter->addWidget(pic); splitter->addWidget(pic);
splitter->addWidget(text); splitter->addWidget(text);
break; break;
default:
break;
} }
settingsCache->setCardInfoViewMode(mode); settingsCache->setCardInfoViewMode(mode);
@ -91,10 +92,16 @@ void CardFrame::setViewMode(int mode)
void CardFrame::setCard(CardInfo *card) void CardFrame::setCard(CardInfo *card)
{ {
if (info) if (info)
{
disconnect(info, nullptr, this, nullptr); disconnect(info, nullptr, this, nullptr);
}
info = card; info = card;
if (info) if (info)
{
connect(info, SIGNAL(destroyed()), this, SLOT(clear())); connect(info, SIGNAL(destroyed()), this, SLOT(clear()));
}
text->setCard(info); text->setCard(info);
pic->setCard(info); pic->setCard(info);
@ -106,9 +113,12 @@ void CardFrame::setCard(const QString &cardName)
} }
void CardFrame::setCard(AbstractCardItem *card) void CardFrame::setCard(AbstractCardItem *card)
{
if (card)
{ {
setCard(card->getInfo()); setCard(card->getInfo());
} }
}
void CardFrame::clear() void CardFrame::clear()
{ {

View file

@ -10,9 +10,9 @@ class CardInfoText;
class QVBoxLayout; class QVBoxLayout;
class QSplitter; class QSplitter;
class CardFrame : public QTabWidget { class CardFrame : public QTabWidget
{
Q_OBJECT Q_OBJECT
private: private:
CardInfo *info; CardInfo *info;
CardInfoPicture *pic; CardInfoPicture *pic;
@ -21,12 +21,12 @@ private:
QWidget *tab1, *tab2, *tab3; QWidget *tab1, *tab2, *tab3;
QVBoxLayout *tab1Layout, *tab2Layout, *tab3Layout; QVBoxLayout *tab1Layout, *tab2Layout, *tab3Layout;
QSplitter *splitter; QSplitter *splitter;
public: public:
enum ViewMode { ImageOnlyView, TextOnlyView, ImageAndTextView }; enum ViewMode { ImageOnlyView, TextOnlyView, ImageAndTextView };
explicit CardFrame(const QString &cardName = QString(), QWidget *parent = nullptr);
CardFrame(const QString &cardName = QString(),
QWidget *parent = 0);
void retranslateUi(); void retranslateUi();
public slots: public slots:
void setCard(CardInfo *card); void setCard(CardInfo *card);
void setCard(const QString &cardName); void setCard(const QString &cardName);

View file

@ -20,10 +20,16 @@ CardInfoPicture::CardInfoPicture(QWidget *parent)
void CardInfoPicture::setCard(CardInfo *card) void CardInfoPicture::setCard(CardInfo *card)
{ {
if (info) if (info)
{
disconnect(info, nullptr, this, nullptr); disconnect(info, nullptr, this, nullptr);
}
info = card; info = card;
if (info) if (info)
{
connect(info, SIGNAL(pixmapUpdated()), this, SLOT(updatePixmap())); connect(info, SIGNAL(pixmapUpdated()), this, SLOT(updatePixmap()));
}
updatePixmap(); updatePixmap();
} }

View file

@ -68,7 +68,9 @@ void CardInfoText::setCard(CardInfo *card)
powtoughLabel2->setText(card->getPowTough()); powtoughLabel2->setText(card->getPowTough());
loyaltyLabel2->setText(card->getLoyalty() > 0 ? QString::number(card->getLoyalty()) : QString()); loyaltyLabel2->setText(card->getLoyalty() > 0 ? QString::number(card->getLoyalty()) : QString());
textLabel->setText(card->getText()); textLabel->setText(card->getText());
} else { }
else
{
nameLabel2->setText(""); nameLabel2->setText("");
manacostLabel2->setText(""); manacostLabel2->setText("");
colorLabel2->setText(""); colorLabel2->setText("");