Fix a crash (#3011)
This commit is contained in:
parent
7a150c558d
commit
dcc632e0d4
4 changed files with 46 additions and 28 deletions
|
@ -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();
|
||||||
|
@ -72,7 +71,7 @@ void CardFrame::setViewMode(int mode)
|
||||||
if(currentIndex() != mode)
|
if(currentIndex() != mode)
|
||||||
setCurrentIndex(mode);
|
setCurrentIndex(mode);
|
||||||
|
|
||||||
switch(mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case ImageOnlyView:
|
case ImageOnlyView:
|
||||||
case TextOnlyView:
|
case TextOnlyView:
|
||||||
|
@ -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);
|
||||||
|
@ -107,7 +114,10 @@ void CardFrame::setCard(const QString &cardName)
|
||||||
|
|
||||||
void CardFrame::setCard(AbstractCardItem *card)
|
void CardFrame::setCard(AbstractCardItem *card)
|
||||||
{
|
{
|
||||||
setCard(card->getInfo());
|
if (card)
|
||||||
|
{
|
||||||
|
setCard(card->getInfo());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardFrame::clear()
|
void CardFrame::clear()
|
||||||
|
|
|
@ -10,29 +10,29 @@ class CardInfoText;
|
||||||
class QVBoxLayout;
|
class QVBoxLayout;
|
||||||
class QSplitter;
|
class QSplitter;
|
||||||
|
|
||||||
class CardFrame : public QTabWidget {
|
class CardFrame : public QTabWidget
|
||||||
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
CardInfo *info;
|
||||||
|
CardInfoPicture *pic;
|
||||||
|
CardInfoText *text;
|
||||||
|
bool cardTextOnly;
|
||||||
|
QWidget *tab1, *tab2, *tab3;
|
||||||
|
QVBoxLayout *tab1Layout, *tab2Layout, *tab3Layout;
|
||||||
|
QSplitter *splitter;
|
||||||
|
|
||||||
private:
|
public:
|
||||||
CardInfo *info;
|
enum ViewMode { ImageOnlyView, TextOnlyView, ImageAndTextView };
|
||||||
CardInfoPicture *pic;
|
explicit CardFrame(const QString &cardName = QString(), QWidget *parent = nullptr);
|
||||||
CardInfoText *text;
|
void retranslateUi();
|
||||||
bool cardTextOnly;
|
|
||||||
QWidget *tab1, *tab2, *tab3;
|
|
||||||
QVBoxLayout *tab1Layout, *tab2Layout, *tab3Layout;
|
|
||||||
QSplitter *splitter;
|
|
||||||
public:
|
|
||||||
enum ViewMode { ImageOnlyView, TextOnlyView, ImageAndTextView };
|
|
||||||
|
|
||||||
CardFrame(const QString &cardName = QString(),
|
public slots:
|
||||||
QWidget *parent = 0);
|
void setCard(CardInfo *card);
|
||||||
void retranslateUi();
|
void setCard(const QString &cardName);
|
||||||
public slots:
|
void setCard(AbstractCardItem *card);
|
||||||
void setCard(CardInfo *card);
|
void clear();
|
||||||
void setCard(const QString &cardName);
|
void setViewMode(int mode);
|
||||||
void setCard(AbstractCardItem *card);
|
|
||||||
void clear();
|
|
||||||
void setViewMode(int mode);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ CardInfoText::CardInfoText(QWidget *parent)
|
||||||
|
|
||||||
void CardInfoText::setCard(CardInfo *card)
|
void CardInfoText::setCard(CardInfo *card)
|
||||||
{
|
{
|
||||||
if(card)
|
if (card)
|
||||||
{
|
{
|
||||||
nameLabel2->setText(card->getName());
|
nameLabel2->setText(card->getName());
|
||||||
manacostLabel2->setText(card->getManaCost());
|
manacostLabel2->setText(card->getManaCost());
|
||||||
|
@ -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("");
|
||||||
|
|
Loading…
Reference in a new issue