46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#include "itemscrollbox.h"
|
|
#include "ui_relayscrollbox.h"
|
|
#include "../items/auxitem.h"
|
|
#include "../items/messageitem.h"
|
|
|
|
ItemScrollBox::ItemScrollBox(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::RelayScrollBox)
|
|
{
|
|
ui->setupUi(this);
|
|
QScroller::grabGesture(ui->scrollArea, QScroller::TouchGesture);
|
|
QScroller::grabGesture(ui->scrollArea, QScroller::LeftMouseButtonGesture);
|
|
}
|
|
|
|
ItemScrollBox::~ItemScrollBox()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void ItemScrollBox::addItem(std::weak_ptr<Item> item)
|
|
{
|
|
if(auto workItem = item.lock())
|
|
{
|
|
if(workItem->isHidden())
|
|
return;
|
|
widgets_.push_back(new ItemWidget(item));
|
|
ui->relayWidgetVbox->addWidget(widgets_.back());
|
|
connect(widgets_.back(), &ItemWidget::deleteRequest, this, &ItemScrollBox::deleteRequest);
|
|
connect(widgets_.back(), &ItemWidget::deleteRequest, this, &ItemScrollBox::removeItem);
|
|
}
|
|
}
|
|
|
|
void ItemScrollBox::removeItem(const ItemData& item)
|
|
{
|
|
for(unsigned i = 0; i < widgets_.size(); i++)
|
|
{
|
|
if(widgets_[i]->controles(item))
|
|
{
|
|
ui->relayWidgetVbox->removeWidget(widgets_[i]);
|
|
delete widgets_[i];
|
|
widgets_.erase(widgets_.begin()+i);
|
|
}
|
|
}
|
|
}
|
|
|
|
|