mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-24 10:23:02 -07:00
[CardSearch] Add card completion popups to chats and search fields (#7089)
* Add card completion popups to chats and search fields Completes @mention and [[card]] in chat, and card names in the deck editor, EDHREC, Archidekt, card art rules, and user card settings searches. Pops up a styled list with mana pips and a card image preview, flipping the list order when the popup opens above the text field. --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
a0e76607b5
commit
83fd65b34b
25 changed files with 1526 additions and 290 deletions
|
|
@ -17,7 +17,7 @@ class ManaCostWidget : public QWidget
|
|||
public:
|
||||
explicit ManaCostWidget(QWidget *parent, CardInfoPtr card);
|
||||
|
||||
QStringList parseManaCost(const QString &manaString);
|
||||
static QStringList parseManaCost(const QString &manaString);
|
||||
public slots:
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -52,12 +52,29 @@ void CardInfoPictureEnlargedWidget::loadPixmap(const QSize &size)
|
|||
* @param size The desired size for the pixmap.
|
||||
*
|
||||
* Sets the widget's pixmap to the card image and resizes the widget to match the specified size. Triggers a repaint.
|
||||
*
|
||||
* When the image is not yet cached, the pixmap is cleared (instead of showing a stale previous card) and the widget
|
||||
* refreshes automatically once the card image finishes loading.
|
||||
*/
|
||||
void CardInfoPictureEnlargedWidget::setCardPixmap(const ExactCard &_card, const QSize size)
|
||||
{
|
||||
if (card.getCardPtr()) {
|
||||
disconnect(card.getCardPtr().data(), nullptr, this, nullptr);
|
||||
}
|
||||
|
||||
card = _card;
|
||||
|
||||
// Clear any previous card's art so we never paint a stale pixmap while the new image loads
|
||||
enlargedPixmap = QPixmap();
|
||||
loadPixmap(size);
|
||||
|
||||
if (card.getCardPtr()) {
|
||||
connect(card.getCardPtr().data(), &CardInfo::pixmapUpdated, this, [this]() {
|
||||
loadPixmap(this->size());
|
||||
update();
|
||||
});
|
||||
}
|
||||
|
||||
setFixedSize(size); // Set the widget size to the enlarged size
|
||||
|
||||
update(); // Trigger a repaint
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue