#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) { 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); } } }