SpacesInteriorPartitionsGridView::SpacesInteriorPartitionsGridView(bool isIP, const model::Model & model, QWidget * parent) : SpacesSubtabGridView(isIP, model, parent) { showStoryFilter(); showThermalZoneFilter(); showSpaceTypeFilter(); showInteriorPartitionGroupFilter(); m_filterGridLayout->setRowStretch(m_filterGridLayout->rowCount(), 100); m_filterGridLayout->setColumnStretch(m_filterGridLayout->columnCount(), 100); m_gridController = new SpacesInteriorPartitionsGridController(isIP, "Space", IddObjectType::OS_Space, model, m_spacesModelObjects); m_gridView = new OSGridView(m_gridController, "Space", "Drop\nSpace", false, parent); setGridController(m_gridController); setGridView(m_gridView); m_gridView->m_contentLayout->addLayout(m_filterGridLayout); m_gridView->m_contentLayout->addSpacing(7); m_gridView->m_dropZone->hide(); onClearSelection(); }
OSGridView::OSGridView(OSGridController * gridController, const QString & headerText, const QString & dropZoneText, bool useHeader, QWidget * parent) : QWidget(parent), m_dropZone(nullptr), m_contentLayout(nullptr), m_CollapsibleView(nullptr), m_gridController(gridController) { auto buttonGroup = new QButtonGroup(); connect(buttonGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &OSGridView::selectCategory); auto buttonLayout = new QHBoxLayout(); buttonLayout->setSpacing(3); buttonLayout->setContentsMargins(10,10,10,10); buttonLayout->setAlignment(Qt::AlignCenter | Qt::AlignLeft); auto vectorController = new GridViewDropZoneVectorController(); m_dropZone = new OSDropZone(vectorController, dropZoneText); m_dropZone->setMaxItems(1); connect(m_dropZone, &OSDropZone::itemDropped, m_gridController, &OSGridController::onItemDropped); buttonLayout->addWidget(m_dropZone); std::vector<QString> categories = m_gridController->categories(); for(unsigned i=0; i<categories.size(); i++){ auto button = new QPushButton(categories.at(i)); button->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::MinimumExpanding); button->setCheckable(true); buttonLayout->addWidget(button); buttonGroup->addButton(button,buttonGroup->buttons().size()); } auto layout = new QVBoxLayout(); layout->setSpacing(0); layout->setContentsMargins(0,0,0,0); setLayout(layout); auto widget = new QWidget; if (useHeader) { auto header = new DarkGradientHeader(); header->label->setText(headerText); auto collabsibleView = new OSCollapsibleView(true); collabsibleView->setHeader(header); collabsibleView->setContent(widget); collabsibleView->setExpanded(true); layout->addWidget(collabsibleView); } else { layout->addWidget(widget); } m_contentLayout = new QVBoxLayout(); m_contentLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); m_contentLayout->setSpacing(0); m_contentLayout->setContentsMargins(0,0,0,0); widget->setLayout(m_contentLayout); m_contentLayout->addLayout(buttonLayout); widget->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Fixed); setGridController(m_gridController); std::vector<QAbstractButton *> buttons = buttonGroup->buttons().toVector().toStdVector(); if(buttons.size() > 0){ QPushButton * button = qobject_cast<QPushButton *>(buttons.at(0)); OS_ASSERT(button); button->setChecked(true); selectCategory(0); } m_timer.setSingleShot(true); connect(&m_timer, &QTimer::timeout, this, &OSGridView::doRefresh); if (this->isVisible()) { m_gridController->connectToModel(); refreshAll(); } }
FacilityShadingGridView::FacilityShadingGridView(bool isIP, const model::Model & model, QWidget * parent) : GridViewSubTab(isIP, model, parent) { auto modelObjects = subsetCastVector<model::ModelObject>(model.getModelObjects<model::ShadingSurfaceGroup>()); std::sort(modelObjects.begin(), modelObjects.end(), ModelObjectNameSorter()); m_gridController = new FacilityShadingGridController(isIP, "Shading Surface Group", IddObjectType::OS_ShadingSurfaceGroup, model, modelObjects); m_gridView = new OSGridView(m_gridController, "Shading Surface Group", "Drop\nShading Surface Group", false, parent); setGridController(m_gridController); setGridView(m_gridView); // Filters QLabel * label = nullptr; QVBoxLayout * layout = nullptr; auto filterGridLayout = new QGridLayout(); filterGridLayout->setContentsMargins(7, 4, 0, 8); filterGridLayout->setSpacing(5); label = new QLabel(); label->setText("Filters:"); label->setObjectName("H2"); filterGridLayout->addWidget(label, filterGridLayout->rowCount(), filterGridLayout->columnCount(), Qt::AlignTop | Qt::AlignLeft); // SHADINGSURFACEGROUPNAME layout = new QVBoxLayout(); label = new QLabel(); label->setText(SHADINGSURFACENAME); label->setObjectName("H3"); layout->addWidget(label, Qt::AlignTop | Qt::AlignLeft); m_nameFilter = new QLineEdit(); m_nameFilter->setFixedWidth(OSItem::ITEM_WIDTH); // Evan note: there are issues with using the signal textChanged or textEdited, related to the design and updating of the gridview (loss of focus, and updates per key stroke) connect(m_nameFilter, &QLineEdit::editingFinished, this, &openstudio::FacilityShadingGridView::nameFilterChanged); QRegExp nameRegex("^\\S.*"); auto nameValidator = new QRegExpValidator(nameRegex, this); m_nameFilter->setValidator(nameValidator); layout->addWidget(m_nameFilter, Qt::AlignTop | Qt::AlignLeft); layout->addStretch(); filterGridLayout->addLayout(layout, filterGridLayout->rowCount() - 1, filterGridLayout->columnCount()); // SHADINGSURFACETYPE layout = new QVBoxLayout(); label = new QLabel(); label->setText(SHADINGSURFACETYPE); label->setObjectName("H3"); layout->addWidget(label, Qt::AlignTop | Qt::AlignLeft); m_typeFilter = new QComboBox(); m_typeFilter->addItem("Site"); m_typeFilter->addItem("Building"); m_typeFilter->addItem("Space"); m_typeFilter->setFixedWidth(OSItem::ITEM_WIDTH); connect(m_typeFilter, &QComboBox::currentTextChanged, this, &openstudio::FacilityShadingGridView::typeFilterChanged); layout->addWidget(m_typeFilter, Qt::AlignTop | Qt::AlignLeft); layout->addStretch(); filterGridLayout->addLayout(layout, filterGridLayout->rowCount() - 1, filterGridLayout->columnCount()); // TILTGREATERTHAN layout = new QVBoxLayout(); label = new QLabel(); label->setText(TILTGREATERTHAN); label->setObjectName("H3"); layout->addWidget(label, Qt::AlignTop | Qt::AlignLeft); m_tiltGreaterThanFilter = new QLineEdit(); m_tiltGreaterThanFilter->setFixedWidth(OSItem::ITEM_WIDTH); connect(m_tiltGreaterThanFilter, &QLineEdit::editingFinished, this, &openstudio::FacilityShadingGridView::tiltFilterChanged); QRegExp regex("^(-?\\d*\\.?\\d+)?$"); auto validator = new QRegExpValidator(regex, this); m_tiltGreaterThanFilter->setValidator(validator); layout->addWidget(m_tiltGreaterThanFilter, Qt::AlignTop | Qt::AlignLeft); layout->addStretch(); filterGridLayout->addLayout(layout, filterGridLayout->rowCount() - 1, filterGridLayout->columnCount()); //TILTLESSTHAN layout = new QVBoxLayout(); label = new QLabel(); label->setText(TILTLESSTHAN); label->setObjectName("H3"); layout->addWidget(label, Qt::AlignTop | Qt::AlignLeft); m_tiltLessThanFilter = new QLineEdit(); m_tiltLessThanFilter->setFixedWidth(OSItem::ITEM_WIDTH); // Evan note: there are issues with using the signal textChanged or textEdited, related to the design and updating of the gridview (loss of focus, and updates per key stroke) connect(m_tiltLessThanFilter, &QLineEdit::editingFinished, this, &openstudio::FacilityShadingGridView::tiltFilterChanged); validator = new QRegExpValidator(regex, this); m_tiltLessThanFilter->setValidator(validator); layout->addWidget(m_tiltLessThanFilter, Qt::AlignTop | Qt::AlignLeft); layout->addStretch(); filterGridLayout->addLayout(layout, filterGridLayout->rowCount() - 1, filterGridLayout->columnCount()); // ORIENTATIONGREATERTHAN layout = new QVBoxLayout(); label = new QLabel(); label->setText(ORIENTATIONGREATERTHAN); label->setObjectName("H3"); layout->addWidget(label, Qt::AlignTop | Qt::AlignLeft); m_orientationGreaterThanFilter = new QLineEdit(); m_orientationGreaterThanFilter->setFixedWidth(OSItem::ITEM_WIDTH); connect(m_orientationGreaterThanFilter, &QLineEdit::editingFinished, this, &openstudio::FacilityShadingGridView::orientationFilterChanged); validator = new QRegExpValidator(regex, this); m_orientationGreaterThanFilter->setValidator(validator); layout->addWidget(m_orientationGreaterThanFilter, Qt::AlignTop | Qt::AlignLeft); layout->addStretch(); filterGridLayout->addLayout(layout, filterGridLayout->rowCount() - 1, filterGridLayout->columnCount()); // ORIENTATIONLESSTHAN layout = new QVBoxLayout(); label = new QLabel(); label->setText(ORIENTATIONLESSTHAN); label->setObjectName("H3"); layout->addWidget(label, Qt::AlignTop | Qt::AlignLeft); m_orientationLessThanFilter = new QLineEdit(); m_orientationLessThanFilter->setFixedWidth(OSItem::ITEM_WIDTH); // Evan note: there are issues with using the signal textChanged or textEdited, related to the design and updating of the gridview (loss of focus, and updates per key stroke) connect(m_orientationLessThanFilter, &QLineEdit::editingFinished, this, &openstudio::FacilityShadingGridView::orientationFilterChanged); validator = new QRegExpValidator(regex, this); m_orientationLessThanFilter->setValidator(validator); layout->addWidget(m_orientationLessThanFilter, Qt::AlignTop | Qt::AlignLeft); layout->addStretch(); filterGridLayout->addLayout(layout, filterGridLayout->rowCount() - 1, filterGridLayout->columnCount()); filterGridLayout->setRowStretch(filterGridLayout->rowCount(), 100); filterGridLayout->setColumnStretch(filterGridLayout->columnCount(), 100); m_gridView->m_contentLayout->addLayout(filterGridLayout); m_gridView->m_contentLayout->addSpacing(7); }