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.widget = new StripWidget{StripWidget::Story};
story.widget->setTitle(QString("ATC-%0").arg(random.bounded(1000, 5000)));
story.widget->setOwner("RH");
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->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)]);
connect(widget, &StripWidget::pointsChanged, this, &StripsGrid::updatePoints);
test.layout->addWidget(widget);
test.widgets.push_back(widget);
});
@@ -122,17 +122,12 @@ void StripsGrid::mousePressEvent(QMouseEvent *event)
{
for (auto *subtaskWidget : column.widgets)
{
if (subtaskWidget->startDragging(event->pos() - subtaskWidget->pos()))
if (subtaskWidget->isInDragArea(event->pos() - subtaskWidget->pos()))
{
m_draggedWidget = subtaskWidget;
m_draggedWidget->beginDrag();
m_dragWidget = new StripWidget{StripWidget::DraggedSubtask, 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 = new StripWidget{StripWidget::DraggingSubtask, *m_draggedWidget, this};
m_dragWidget->move(m_draggedWidget->pos());
m_dragWidget->show();
@@ -157,7 +152,7 @@ void StripsGrid::mouseReleaseEvent(QMouseEvent *event)
m_draggedWidget->endDrag();
m_draggedWidget = nullptr;
m_dragWidget->deleteLater();
delete m_dragWidget;
m_dragWidget = nullptr;
}

View File

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

View File

@@ -19,15 +19,15 @@ public:
struct Subtask_t{};
static constexpr const Subtask_t Subtask{};
struct DraggedSubtask_t{};
static constexpr const DraggedSubtask_t DraggedSubtask{};
struct DraggingSubtask_t{};
static constexpr const DraggingSubtask_t DraggingSubtask{};
explicit StripWidget(Story_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;
bool startDragging(const QPoint &pos) const;
bool isInDragArea(const QPoint &pos) const;
QString title() const;
void setTitle(const QString &title);
@@ -44,6 +44,9 @@ public:
void beginDrag();
void endDrag();
signals:
void pointsChanged(int points);
private:
std::unique_ptr<Ui::StripWidget> m_ui;
};