CardInfoWidget improvement by Absinthe and Hellkeepa

This commit is contained in:
Max-Wilhelm Bruker 2011-06-13 19:15:12 +02:00
parent a03bf8884f
commit 9cfe4bea59
4 changed files with 82 additions and 6 deletions

View file

@ -11,8 +11,24 @@
#include "settingscache.h" #include "settingscache.h"
CardInfoWidget::CardInfoWidget(ResizeMode _mode, QWidget *parent, Qt::WindowFlags flags) CardInfoWidget::CardInfoWidget(ResizeMode _mode, QWidget *parent, Qt::WindowFlags flags)
: QFrame(parent, flags), pixmapWidth(160), aspectRatio((qreal) CARD_HEIGHT / (qreal) CARD_WIDTH), minimized(false), mode(_mode), info(0) : QFrame(parent, flags)
, pixmapWidth(160)
, aspectRatio((qreal) CARD_HEIGHT / (qreal) CARD_WIDTH)
, minimized(settingsCache->getCardInfoMinimized()) // Initialize the cardinfo view status from cache.
, mode(_mode)
, info(0)
{ {
if (mode == ModeGameTab) {
// Create indexed list of status views for card.
const QStringList cardInfoStatus = QStringList() << tr("Hide card info") << tr("Show card only") << tr("Show text only") << tr("Show full info");
// Create droplist for cardinfo view selection, and set right current index.
dropList = new QComboBox();
dropList->addItems(cardInfoStatus);
dropList->setCurrentIndex(minimized);
connect(dropList, SIGNAL(currentIndexChanged(int)), this, SLOT(minimizeClicked(int)));
}
cardPicture = new QLabel; cardPicture = new QLabel;
cardPicture->setAlignment(Qt::AlignCenter); cardPicture->setAlignment(Qt::AlignCenter);
@ -33,6 +49,8 @@ CardInfoWidget::CardInfoWidget(ResizeMode _mode, QWidget *parent, Qt::WindowFlag
QGridLayout *grid = new QGridLayout(this); QGridLayout *grid = new QGridLayout(this);
int row = 0; int row = 0;
if (mode == ModeGameTab)
grid->addWidget(dropList, row++, 1, 1, 1, Qt::AlignRight);
grid->addWidget(cardPicture, row++, 0, 1, 2); grid->addWidget(cardPicture, row++, 0, 1, 2);
grid->addWidget(nameLabel1, row, 0); grid->addWidget(nameLabel1, row, 0);
grid->addWidget(nameLabel2, row++, 1); grid->addWidget(nameLabel2, row++, 1);
@ -51,15 +69,51 @@ CardInfoWidget::CardInfoWidget(ResizeMode _mode, QWidget *parent, Qt::WindowFlag
retranslateUi(); retranslateUi();
setFrameStyle(QFrame::Panel | QFrame::Raised); setFrameStyle(QFrame::Panel | QFrame::Raised);
setMinimumHeight(350);
if (mode == ModeGameTab) { if (mode == ModeGameTab) {
textLabel->setFixedHeight(100); textLabel->setFixedHeight(100);
setFixedWidth(sizeHint().width()); setFixedWidth(sizeHint().width());
setMaximumHeight(580); setMinimized(settingsCache->getCardInfoMinimized());
} else if (mode == ModePopUp) } else if (mode == ModePopUp)
setFixedWidth(350); setFixedWidth(350);
else else
setFixedWidth(250); setFixedWidth(250);
if (mode != ModeDeckEditor)
setFixedHeight(sizeHint().height());
}
void CardInfoWidget::minimizeClicked(int newMinimized)
{
// Set new status, and store it in the settings cache.
setMinimized(newMinimized);
settingsCache->setCardInfoMinimized(newMinimized);
}
void CardInfoWidget::setMinimized(int _minimized)
{
minimized = _minimized;
// Set the picture to be shown only at "card only" (1) and "full info" (3)
if (minimized == 1 || minimized == 3) {
cardPicture->setVisible(true);
} else {
cardPicture->setVisible(false);
}
// Set the rest of the fields to be shown only at "full info" (3) and "oracle only" (2)
bool showAll = (minimized == 2 || minimized == 3) ? true : false;
// Toggle oracle fields as according to selected view.
nameLabel2->setVisible(showAll);
nameLabel1->setVisible(showAll);
manacostLabel1->setVisible(showAll);
manacostLabel2->setVisible(showAll);
cardtypeLabel1->setVisible(showAll);
cardtypeLabel2->setVisible(showAll);
powtoughLabel1->setVisible(showAll);
powtoughLabel2->setVisible(showAll);
textLabel->setVisible(showAll);
setFixedHeight(sizeHint().height());
} }
void CardInfoWidget::setCard(CardInfo *card) void CardInfoWidget::setCard(CardInfo *card)
@ -112,7 +166,7 @@ void CardInfoWidget::retranslateUi()
void CardInfoWidget::resizeEvent(QResizeEvent * /*event*/) void CardInfoWidget::resizeEvent(QResizeEvent * /*event*/)
{ {
if ((mode == ModeDeckEditor) || (mode == ModeGameTab)) { if (mode == ModeDeckEditor) {
pixmapWidth = qMin(width() * 0.95, (height() - 200) / aspectRatio); pixmapWidth = qMin(width() * 0.95, (height() - 200) / aspectRatio);
updatePixmap(); updatePixmap();
} }

View file

@ -2,6 +2,8 @@
#define CARDINFOWIDGET_H #define CARDINFOWIDGET_H
#include <QFrame> #include <QFrame>
#include <QStringList>
#include <QComboBox>
class QLabel; class QLabel;
class QTextEdit; class QTextEdit;
@ -13,34 +15,44 @@ class QMouseEvent;
class CardInfoWidget : public QFrame { class CardInfoWidget : public QFrame {
Q_OBJECT Q_OBJECT
public: public:
enum ResizeMode { ModeDeckEditor, ModeGameTab, ModePopUp }; enum ResizeMode { ModeDeckEditor, ModeGameTab, ModePopUp };
private: private:
int pixmapWidth; int pixmapWidth;
qreal aspectRatio; qreal aspectRatio;
bool minimized; int minimized; // 0 - minimized, 1 - card, 2 - oracle only, 3 - full
ResizeMode mode; ResizeMode mode;
QComboBox *dropList;
QLabel *cardPicture; QLabel *cardPicture;
QLabel *nameLabel1, *nameLabel2; QLabel *nameLabel1, *nameLabel2;
QLabel *manacostLabel1, *manacostLabel2; QLabel *manacostLabel1, *manacostLabel2;
QLabel *cardtypeLabel1, *cardtypeLabel2; QLabel *cardtypeLabel1, *cardtypeLabel2;
QLabel *powtoughLabel1, *powtoughLabel2; QLabel *powtoughLabel1, *powtoughLabel2;
QTextEdit *textLabel; QTextEdit *textLabel;
CardInfo *info; CardInfo *info;
void setMinimized(int _minimized);
public: public:
CardInfoWidget(ResizeMode _mode, QWidget *parent = 0, Qt::WindowFlags f = 0); CardInfoWidget(ResizeMode _mode, QWidget *parent = 0, Qt::WindowFlags f = 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);
void setCard(AbstractCardItem *card); void setCard(AbstractCardItem *card);
private slots: private slots:
void clear(); void clear();
void updatePixmap(); void updatePixmap();
void minimizeClicked(int newMinimized);
signals: signals:
void mouseReleased(); void mouseReleased();
protected: protected:
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
void mouseReleaseEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);

View file

@ -19,6 +19,7 @@ SettingsCache::SettingsCache()
picDownload = settings->value("personal/picturedownload", true).toBool(); picDownload = settings->value("personal/picturedownload", true).toBool();
doubleClickToPlay = settings->value("interface/doubleclicktoplay", true).toBool(); doubleClickToPlay = settings->value("interface/doubleclicktoplay", true).toBool();
cardInfoMinimized = settings->value("interface/cardinfominimized", 0).toInt();
tabGameSplitterSizes = settings->value("interface/tabgame_splittersizes").toByteArray(); tabGameSplitterSizes = settings->value("interface/tabgame_splittersizes").toByteArray();
displayCardNames = settings->value("cards/displaycardnames", true).toBool(); displayCardNames = settings->value("cards/displaycardnames", true).toBool();
horizontalHand = settings->value("hand/horizontal", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool();
@ -107,6 +108,12 @@ void SettingsCache::setDoubleClickToPlay(int _doubleClickToPlay)
settings->setValue("interface/doubleclicktoplay", doubleClickToPlay); settings->setValue("interface/doubleclicktoplay", doubleClickToPlay);
} }
void SettingsCache::setCardInfoMinimized(int _cardInfoMinimized)
{
cardInfoMinimized = _cardInfoMinimized;
settings->setValue("interface/cardinfominimized", cardInfoMinimized);
}
void SettingsCache::setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes) void SettingsCache::setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes)
{ {
tabGameSplitterSizes = _tabGameSplitterSizes; tabGameSplitterSizes = _tabGameSplitterSizes;

View file

@ -29,6 +29,7 @@ private:
QString handBgPath, stackBgPath, tableBgPath, playerBgPath, cardBackPicturePath; QString handBgPath, stackBgPath, tableBgPath, playerBgPath, cardBackPicturePath;
bool picDownload; bool picDownload;
bool doubleClickToPlay; bool doubleClickToPlay;
int cardInfoMinimized;
QByteArray tabGameSplitterSizes; QByteArray tabGameSplitterSizes;
bool displayCardNames; bool displayCardNames;
bool horizontalHand; bool horizontalHand;
@ -50,6 +51,7 @@ public:
QString getCardBackPicturePath() const { return cardBackPicturePath; } QString getCardBackPicturePath() const { return cardBackPicturePath; }
bool getPicDownload() const { return picDownload; } bool getPicDownload() const { return picDownload; }
bool getDoubleClickToPlay() const { return doubleClickToPlay; } bool getDoubleClickToPlay() const { return doubleClickToPlay; }
int getCardInfoMinimized() const { return cardInfoMinimized; }
QByteArray getTabGameSplitterSizes() const { return tabGameSplitterSizes; } QByteArray getTabGameSplitterSizes() const { return tabGameSplitterSizes; }
bool getDisplayCardNames() const { return displayCardNames; } bool getDisplayCardNames() const { return displayCardNames; }
bool getHorizontalHand() const { return horizontalHand; } bool getHorizontalHand() const { return horizontalHand; }
@ -71,6 +73,7 @@ public slots:
void setCardBackPicturePath(const QString &_cardBackPicturePath); void setCardBackPicturePath(const QString &_cardBackPicturePath);
void setPicDownload(int _picDownload); void setPicDownload(int _picDownload);
void setDoubleClickToPlay(int _doubleClickToPlay); void setDoubleClickToPlay(int _doubleClickToPlay);
void setCardInfoMinimized(int _cardInfoMinimized);
void setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes); void setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes);
void setDisplayCardNames(int _displayCardNames); void setDisplayCardNames(int _displayCardNames);
void setHorizontalHand(int _horizontalHand); void setHorizontalHand(int _horizontalHand);