Implemented refresh after change of points spinboxes

This commit is contained in:
2020-03-07 15:37:21 +01:00
parent ec528901b5
commit 8f052e70b9
3 changed files with 22 additions and 16 deletions

View File

@@ -70,7 +70,6 @@ StripsGrid::StripsGrid(QWidget *parent) :
Story story; Story story;
story.widget = new StripWidget{StripWidget::Story}; story.widget = new StripWidget{StripWidget::Story};
story.widget->setTitle(QString("ATC-%0").arg(random.bounded(1000, 5000))); story.widget->setTitle(QString("ATC-%0").arg(random.bounded(1000, 5000)));
story.widget->setOwner("RH");
for (int column = 0; column < 5; column++) for (int column = 0; column < 5; column++)
{ {
@@ -93,6 +92,7 @@ StripsGrid::StripsGrid(QWidget *parent) :
widget->setTitle(QString("ATC-%0").arg(random.bounded(1000, 5000))); widget->setTitle(QString("ATC-%0").arg(random.bounded(1000, 5000)));
widget->setPoints(std::array<int, 5>{1,3,5,8,13}[random.bounded(5)]); widget->setPoints(std::array<int, 5>{1,3,5,8,13}[random.bounded(5)]);
widget->setOwner(std::array<const char *, 5>{"DB", "KW", "BK", "MS", "AS"}[random.bounded(5)]); widget->setOwner(std::array<const char *, 5>{"DB", "KW", "BK", "MS", "AS"}[random.bounded(5)]);
connect(widget, &StripWidget::pointsChanged, this, &StripsGrid::updatePoints);
test.layout->addWidget(widget); test.layout->addWidget(widget);
test.widgets.push_back(widget); test.widgets.push_back(widget);
}); });
@@ -122,17 +122,12 @@ void StripsGrid::mousePressEvent(QMouseEvent *event)
{ {
for (auto *subtaskWidget : column.widgets) for (auto *subtaskWidget : column.widgets)
{ {
if (subtaskWidget->startDragging(event->pos() - subtaskWidget->pos())) if (subtaskWidget->isInDragArea(event->pos() - subtaskWidget->pos()))
{ {
m_draggedWidget = subtaskWidget; m_draggedWidget = subtaskWidget;
m_draggedWidget->beginDrag(); m_draggedWidget->beginDrag();
m_dragWidget = new StripWidget{StripWidget::DraggedSubtask, this}; m_dragWidget = new StripWidget{StripWidget::DraggingSubtask, *m_draggedWidget, this};
m_dragWidget->setTitle(m_draggedWidget->title());
m_dragWidget->setDescription(m_draggedWidget->description());
m_dragWidget->setPoints(m_draggedWidget->points());
m_dragWidget->setOwner(m_draggedWidget->owner());
m_dragWidget->setStyleSheet(m_draggedWidget->styleSheet());
m_dragWidget->move(m_draggedWidget->pos()); m_dragWidget->move(m_draggedWidget->pos());
m_dragWidget->show(); m_dragWidget->show();
@@ -157,7 +152,7 @@ void StripsGrid::mouseReleaseEvent(QMouseEvent *event)
m_draggedWidget->endDrag(); m_draggedWidget->endDrag();
m_draggedWidget = nullptr; m_draggedWidget = nullptr;
m_dragWidget->deleteLater(); delete m_dragWidget;
m_dragWidget = nullptr; m_dragWidget = nullptr;
} }

View File

@@ -13,6 +13,8 @@ StripWidget::StripWidget(QWidget *parent) :
setMinimumSize(size()); setMinimumSize(size());
setMaximumSize(size()); setMaximumSize(size());
setFixedSize(size()); setFixedSize(size());
connect(m_ui->points, &QSpinBox::valueChanged, this, &StripWidget::pointsChanged);
} }
StripWidget::StripWidget(StripWidget::Story_t, QWidget *parent) : StripWidget::StripWidget(StripWidget::Story_t, QWidget *parent) :
@@ -21,6 +23,9 @@ StripWidget::StripWidget(StripWidget::Story_t, QWidget *parent) :
m_ui->points->setReadOnly(true); m_ui->points->setReadOnly(true);
m_ui->points->setMaximum(9999); m_ui->points->setMaximum(9999);
delete m_ui->owner;
m_ui->owner = nullptr;
setStyleSheet("StripWidget { background-color: #AFA; }"); setStyleSheet("StripWidget { background-color: #AFA; }");
} }
@@ -30,15 +35,18 @@ StripWidget::StripWidget(StripWidget::Subtask_t, QWidget *parent) :
setStyleSheet("StripWidget { background-color: #FCC; }"); setStyleSheet("StripWidget { background-color: #FCC; }");
} }
StripWidget::StripWidget(StripWidget::DraggedSubtask_t, QWidget *parent) : StripWidget::StripWidget(StripWidget::DraggingSubtask_t, const StripWidget &draggedSubtask, QWidget *parent) :
StripWidget{Subtask, parent} StripWidget{Subtask, parent}
{ {
setGraphicsEffect(new QGraphicsDropShadowEffect); setTitle(draggedSubtask.title());
setDescription(draggedSubtask.description());
setPoints(draggedSubtask.points());
setOwner(draggedSubtask.owner());
} }
StripWidget::~StripWidget() = default; StripWidget::~StripWidget() = default;
bool StripWidget::startDragging(const QPoint &pos) const bool StripWidget::isInDragArea(const QPoint &pos) const
{ {
return m_ui->title->geometry().contains(pos); return m_ui->title->geometry().contains(pos);
} }

View File

@@ -19,15 +19,15 @@ public:
struct Subtask_t{}; struct Subtask_t{};
static constexpr const Subtask_t Subtask{}; static constexpr const Subtask_t Subtask{};
struct DraggedSubtask_t{}; struct DraggingSubtask_t{};
static constexpr const DraggedSubtask_t DraggedSubtask{}; static constexpr const DraggingSubtask_t DraggingSubtask{};
explicit StripWidget(Story_t, QWidget *parent = nullptr); explicit StripWidget(Story_t, QWidget *parent = nullptr);
explicit StripWidget(Subtask_t, QWidget *parent = nullptr); explicit StripWidget(Subtask_t, QWidget *parent = nullptr);
explicit StripWidget(DraggedSubtask_t, QWidget *parent = nullptr); explicit StripWidget(DraggingSubtask_t, const StripWidget &draggedSubtask, QWidget *parent = nullptr);
~StripWidget() override; ~StripWidget() override;
bool startDragging(const QPoint &pos) const; bool isInDragArea(const QPoint &pos) const;
QString title() const; QString title() const;
void setTitle(const QString &title); void setTitle(const QString &title);
@@ -44,6 +44,9 @@ public:
void beginDrag(); void beginDrag();
void endDrag(); void endDrag();
signals:
void pointsChanged(int points);
private: private:
std::unique_ptr<Ui::StripWidget> m_ui; std::unique_ptr<Ui::StripWidget> m_ui;
}; };