chore: baseline usable version

This commit is contained in:
dela
2026-06-10 11:17:51 +08:00
commit a2f82a86b6
932 changed files with 172551 additions and 0 deletions
@@ -0,0 +1,78 @@
#ifndef DASHBOARDSECTIONORDERSTRIP_H
#define DASHBOARDSECTIONORDERSTRIP_H
#include <QFrame>
#include <QHash>
#include <QSize>
#include <QPointer>
#include <QStringList>
class QGraphicsOpacityEffect;
class QLabel;
class QMouseEvent;
class QResizeEvent;
class DashboardSectionOrderStrip : public QFrame {
Q_OBJECT
public:
explicit DashboardSectionOrderStrip(QWidget* parent = nullptr);
void setSectionOrder(const QStringList& order,
const QHash<QString, QString>& titles);
QStringList sectionOrder() const;
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
signals:
void sectionOrderChanged(const QStringList& order);
protected:
bool eventFilter(QObject* watched, QEvent* event) override;
void mouseMoveEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent* event) override;
void resizeEvent(QResizeEvent* event) override;
private:
struct ChipItem {
QString sectionId;
QFrame* chip = nullptr;
};
QFrame* createChip(const QString& title);
void rebuildChips();
int indexOfChip(const QFrame* chip) const;
int insertionIndexForPosition(int localX) const;
void beginDrag(QFrame* chip);
void updateDrag(const QPoint& globalPos);
void updateDragPreview(const QPoint& globalPos);
void finishDrag();
void resetDragState(bool animateDraggedChip = false);
void setDraggingChip(QFrame* chip, bool dragging);
void setIndicatorIndex(int index, bool animate = true);
void relayoutChips(bool animate);
void moveWidgetTo(QWidget* widget, const QPoint& targetPos, bool animate,
int duration = 180);
void stopPosAnimations(QWidget* widget) const;
int fullContentWidth() const;
int contentWidthForCurrentState() const;
int chipY() const;
int indicatorY() const;
QFrame* m_dropIndicator = nullptr;
QFrame* m_dragPreview = nullptr;
QLabel* m_dragPreviewLabel = nullptr;
QGraphicsOpacityEffect* m_dragPreviewOpacity = nullptr;
QList<ChipItem> m_chipItems;
QStringList m_order;
QHash<QString, QString> m_titles;
QPointer<QFrame> m_pressedChip;
QPointer<QFrame> m_draggedChip;
QPoint m_pressGlobalPos;
QPoint m_pressChipOffset;
int m_dragSourceIndex = -1;
int m_indicatorIndex = -1;
bool m_dragging = false;
};
#endif