diff options
author | Janne Kangas <janne.kangas@qt.io> | 2018-10-16 11:28:58 +0300 |
---|---|---|
committer | Janne Kangas <janne.kangas@qt.io> | 2018-11-01 11:31:39 +0000 |
commit | 74e92c8d0d879dc0bc5bc3dd9612f7a65dbf349c (patch) | |
tree | 4a33a1c321ade8118eecdecd5d9f1a43ed54b522 /src/Authoring/Studio/Application/DataInputListDlg.cpp | |
parent | ba185d3c305eef909cb7f8e58c7fc5f30f8c1373 (diff) |
UX changes to datainput management and selector
- New layout for management dialog
- Filters and search for datainput select/replace list
Change-Id: Idbfa26f1bb59a2d6185a9ad803b4be623db9b30d
Task-id: QT3DS-2513
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Application/DataInputListDlg.cpp')
-rw-r--r-- | src/Authoring/Studio/Application/DataInputListDlg.cpp | 74 |
1 files changed, 43 insertions, 31 deletions
diff --git a/src/Authoring/Studio/Application/DataInputListDlg.cpp b/src/Authoring/Studio/Application/DataInputListDlg.cpp index 360b6597..b7e0a4bf 100644 --- a/src/Authoring/Studio/Application/DataInputListDlg.cpp +++ b/src/Authoring/Studio/Application/DataInputListDlg.cpp @@ -53,12 +53,12 @@ CDataInputListDlg::CDataInputListDlg(QMap<QString, CDataInputDialogItem *> *data : QDialog(parent) , m_ui(new Ui::DataInputListDlg) , m_actualDataInputs(datainputs) - , m_goToAdd(goToAdd) - , m_defaultType(defaultType) , m_currentDataInputIndex(-1) , m_tableContents(new QStandardItemModel(0, columnCount, this)) , m_infoContents(new QStandardItemModel(0, 3, this)) + , m_goToAdd(goToAdd) , m_sortColumn(-1) + , m_defaultType(defaultType) , m_acceptedTypes(acceptedTypes) { m_ui->setupUi(this); @@ -69,26 +69,21 @@ CDataInputListDlg::CDataInputListDlg(QMap<QString, CDataInputDialogItem *> *data addButton->setIcon(QIcon(":/images/add.png")); addButton->setAccessibleName(QStringLiteral("DataInputListButton")); addButton->setObjectName(QStringLiteral("DataInputListButton")); - QPushButton *editButton = new QPushButton(this); - editButton->setIcon(QIcon(":/images/Objects-edit-disabled.png")); - editButton->setAccessibleName(QStringLiteral("DataInputListButton")); - editButton->setObjectName(QStringLiteral("DataInputListButton")); QPushButton *removeButton = new QPushButton(this); removeButton->setIcon(QIcon(":/images/Action-Trash-Disabled.png")); removeButton->setAccessibleName(QStringLiteral("DataInputListButton")); removeButton->setObjectName(QStringLiteral("DataInputListButton")); m_ui->buttonBoxAddEditRemove->addButton(addButton, QDialogButtonBox::ActionRole); - m_ui->buttonBoxAddEditRemove->addButton(editButton, QDialogButtonBox::ActionRole); m_ui->buttonBoxAddEditRemove->addButton(removeButton, QDialogButtonBox::ActionRole); QList<QAbstractButton *>buttons = m_ui->buttonBoxAddEditRemove->buttons(); connect(buttons.at(0), &QAbstractButton::clicked, this, &CDataInputListDlg::onAddDataInput); - connect(buttons.at(1), &QAbstractButton::clicked, this, &CDataInputListDlg::onEditDataInput); - connect(buttons.at(2), &QAbstractButton::clicked, this, &CDataInputListDlg::onRemoveDataInput); + connect(buttons.at(1), &QAbstractButton::clicked, this, &CDataInputListDlg::onRemoveDataInput); buttons[0]->setToolTip(tr("Add New Data Input...")); - buttons[1]->setToolTip(tr("Edit Data Input...")); - buttons[2]->setToolTip(tr("Remove Data Input")); + buttons[0]->setText(tr("Add Data Input")); + buttons[1]->setToolTip(tr("Remove Data Input")); + buttons[1]->setText(tr("Remove existing Data Input")); initDialog(); @@ -113,10 +108,12 @@ void CDataInputListDlg::initDialog() // Update table contents updateContents(); + updateInfo(); // Make the expression column wider than name and type m_ui->tableView->horizontalHeader()->setStretchLastSection(true); m_ui->tableView->horizontalHeader()->setMinimumSectionSize(125); + m_ui->tableView->setFocusPolicy(Qt::NoFocus); // Align columns left and prevent selecting the whole column m_ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); @@ -134,6 +131,7 @@ void CDataInputListDlg::initDialog() m_ui->elementInfo->horizontalHeader()->setStretchLastSection(true); m_ui->elementInfo->horizontalHeader()->setMinimumSectionSize(125); m_ui->elementInfo->setModel(m_infoContents); + m_ui->elementInfo->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); connect(m_replaceSelectedAction, &QAction::triggered, this, &CDataInputListDlg::onReplaceSelected); @@ -156,23 +154,14 @@ void CDataInputListDlg::initDialog() void CDataInputListDlg::updateButtons() { if (m_ui->tableView->selectionModel() - && m_ui->tableView->selectionModel()->selectedIndexes().size() > 0) { - m_ui->buttonBoxAddEditRemove->buttons()[2]->setEnabled(true); - m_ui->buttonBoxAddEditRemove->buttons()[2]->setIcon( + && m_ui->tableView->selectionModel()->selectedIndexes().size() > 0) { + m_ui->buttonBoxAddEditRemove->buttons()[1]->setEnabled(true); + m_ui->buttonBoxAddEditRemove->buttons()[1]->setIcon( QIcon(":/images/Action-Trash-Normal.png")); } else { - m_ui->buttonBoxAddEditRemove->buttons()[2]->setEnabled(false); - m_ui->buttonBoxAddEditRemove->buttons()[2]->setIcon( - QIcon(":/images/Action-Trash-Disabled.png")); - } - if (m_dataInputs.isEmpty() || m_currentDataInputIndex == -1) { m_ui->buttonBoxAddEditRemove->buttons()[1]->setEnabled(false); m_ui->buttonBoxAddEditRemove->buttons()[1]->setIcon( - QIcon(":/images/Objects-edit-disabled.png")); - } else { - m_ui->buttonBoxAddEditRemove->buttons()[1]->setEnabled(true); - m_ui->buttonBoxAddEditRemove->buttons()[1]->setIcon( - QIcon(":/images/Objects-edit-normal.png")); + QIcon(":/images/Action-Trash-Disabled.png")); } } @@ -234,6 +223,11 @@ void CDataInputListDlg::updateInfo() auto refHelper = doc->GetDataModelObjectReferenceHelper(); m_infoContents->clear(); + + QStringList labels; + labels << tr("Object Name") << tr("Location") << tr("Properties"); + m_infoContents->setHorizontalHeaderLabels(labels); + // Only show controlled instances if we have a single datainput selected. if (m_ui->tableView->selectionModel()->selectedRows(0).size() == 1) { for (auto allCtrldElemsIt = m_dataInputs[m_currentDataInputName]->ctrldElems.begin(); @@ -293,6 +287,15 @@ void CDataInputListDlg::updateInfo() m_infoContents->appendRow(QList<QStandardItem *>({item, item2, item3})); } } + // Show this datainput uses in subpresentations but leave property name list + // empty because we do not have that info. + const auto uniqueKeys + = m_dataInputs[m_currentDataInputName]->externalPresBoundTypes.uniqueKeys(); + for (auto &k : uniqueKeys) { + m_infoContents->appendRow(QList<QStandardItem *>( + {new QStandardItem(QObject::tr("<subpresentation>")), + new QStandardItem(k), new QStandardItem()})); + } } m_ui->elementInfo->setModel(m_infoContents); @@ -373,7 +376,7 @@ void CDataInputListDlg::onRemoveDataInput() QVector<int> removedRows; if (m_ui->tableView->selectionModel()) { const QModelIndexList indexes = m_ui->tableView->selectionModel()->selectedIndexes(); - for (const auto index : indexes) { + for (const auto &index : indexes) { if (!removedRows.contains(index.row())) removedRows.append(index.row()); } @@ -579,7 +582,18 @@ void CDataInputListDlg::onReplaceAll() void CDataInputListDlg::onElementSelectionChanged() { - bool disable = m_ui->elementInfo->selectionModel()->selectedRows().size() == 0; + bool disable = true; + QModelIndexList selected = m_ui->elementInfo->selectionModel()->selectedRows(2); + // We only can change bindings in the currently open project. Disable replace + // actions if we have selected a row denoting control in a subpresentation + // (fastest way to check is to see if property list is empty). + if (selected.isEmpty()) + disable = true; + else if (m_ui->elementInfo->model()->data(selected.at(0)).isNull()) + disable = true; + else + disable = false; + m_replaceSelectedAction->setDisabled(disable); m_replaceAllAction->setDisabled(disable); } @@ -605,12 +619,10 @@ void CDataInputListDlg::setUniqueAcceptedDITypes( } QVector<QPair<QString, int>> dataInputList; + for (auto &it : qAsConst(m_dataInputs)) + dataInputList.append({it->name, it->type}); - for (auto it : qAsConst(m_dataInputs)) { - if (okDiTypes.contains((EDataType)it->type)) - dataInputList.append(QPair<QString, int>(it->name, it->type)); - } - + m_dataInputChooserView->setMatchingTypes(okDiTypes); m_dataInputChooserView->setData(dataInputList, m_currentDataInputName); } } |