! \class DatapickerView \brief View class for Datapicker \ingroup frontend */
| 32 | \ingroup frontend |
| 33 | */ |
| 34 | DatapickerView::DatapickerView(Datapicker* datapicker) |
| 35 | : QWidget() |
| 36 | , m_tabWidget(new QTabWidget(this)) |
| 37 | , m_datapicker(datapicker) { |
| 38 | m_tabWidget->setTabPosition(QTabWidget::South); |
| 39 | m_tabWidget->setTabShape(QTabWidget::Rounded); |
| 40 | // m_tabWidget->setMovable(true); |
| 41 | m_tabWidget->setContextMenuPolicy(Qt::CustomContextMenu); |
| 42 | |
| 43 | auto* layout = new QHBoxLayout(this); |
| 44 | layout->setContentsMargins(0, 0, 0, 0); |
| 45 | layout->addWidget(m_tabWidget); |
| 46 | |
| 47 | // add tab for each children view |
| 48 | m_initializing = true; |
| 49 | for (const auto* aspect : m_datapicker->children<AbstractAspect>(AbstractAspect::ChildIndexFlag::IncludeHidden)) { |
| 50 | handleAspectAdded(aspect); |
| 51 | for (const auto* child : aspect->children<AbstractAspect>()) |
| 52 | handleAspectAdded(child); |
| 53 | } |
| 54 | m_initializing = false; |
| 55 | |
| 56 | if (!m_datapicker->isLoading()) { |
| 57 | const auto& size = m_datapicker->image()->view()->size(); |
| 58 | resize(size.width() * 1.1, size.height() * 1.1); |
| 59 | } |
| 60 | |
| 61 | // SIGNALs/SLOTs |
| 62 | connect(m_datapicker, &Datapicker::aspectDescriptionChanged, this, &DatapickerView::handleDescriptionChanged); |
| 63 | connect(m_datapicker, &Datapicker::childAspectAdded, this, &DatapickerView::handleAspectAdded); |
| 64 | connect(m_datapicker, &Datapicker::childAspectAboutToBeRemoved, this, &DatapickerView::handleAspectAboutToBeRemoved); |
| 65 | connect(m_datapicker, &Datapicker::datapickerItemSelected, this, &DatapickerView::itemSelected); |
| 66 | |
| 67 | connect(m_tabWidget, &QTabWidget::currentChanged, this, &DatapickerView::tabChanged); |
| 68 | connect(m_tabWidget, &QTabWidget::customContextMenuRequested, this, &DatapickerView::showTabContextMenu); |
| 69 | connect(m_tabWidget->tabBar(), &QTabBar::tabMoved, this, &DatapickerView::tabMoved); |
| 70 | } |
| 71 | |
| 72 | DatapickerView::~DatapickerView() { |
| 73 | // delete all children views here, its own view will be deleted in ~AbstractPart() |