Files
qTier/tierrow.hpp
2024-05-26 01:01:46 -05:00

62 lines
1.5 KiB
C++

#ifndef TIERROW_HPP
#define TIERROW_HPP
#include "tiercard.hpp"
#include "tierrowtitlecard.hpp"
#include "flowlayout.h"
#include "tierplaceholder.hpp"
#include <QWidget>
#include <QDrag>
#include <unordered_map>
class TierRow : public QWidget
{
Q_OBJECT
public:
using IdType = TierRowTitleCard::IdType;
static TierRow* create(QWidget* parent = nullptr);
static TierRow* getFromId(IdType id);
~TierRow();
void addCard(TierCard* card);
TierCard* takeCard(uint32_t id);
int cardCount() const;
void setColor(QColor color);
QColor color() const;
void setText(QString text);
QString text() const;
uint32_t id() const;
protected:
void resizeEvent(QResizeEvent* event) override;
// void mousePressEvent(QMouseEvent* event) override;
void dropEvent(QDropEvent *event) override;
void dragEnterEvent(QDragEnterEvent* event) override;
void dragLeaveEvent(QDragLeaveEvent* event) override;
void dragMoveEvent(QDragMoveEvent* event) override;
private:
explicit TierRow(IdType id, QWidget* parent = nullptr);
TierRowTitleCard* titleCard;
QWidget* cardContainer;
FlowLayout* cardLayout;
QColor _color;
const IdType _id;
TierPlaceholder* placeholder = nullptr;
int placeholderIndex;
void recalcMaxHeight();
void clearPlaceholder();
int calculateIndex(QPointF loc);
inline static std::unordered_map<IdType, TierRow*> idMap;
public slots:
void cardResize(QSize newSize);
void fadeChange(float newFade);
signals:
};
#endif // TIERROW_HPP