diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-08-23 15:12:56 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-08-24 07:33:03 +0000 |
commit | ae39078bc8ea7c9ca6e63e041dbbe8b9582d8698 (patch) | |
tree | f0b5b2d4c4cd2a4487147b9ccc60baf136f9328c /src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp | |
parent | 006177df780dccb9faf5e9251f832e83ee52317b (diff) |
Update font combobox in inspector when font files change
Task-number: QT3DS-2124
Change-Id: Id946681a8a439a455abf3acbd125e0419b583397
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp')
-rw-r--r-- | src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp | 63 |
1 files changed, 35 insertions, 28 deletions
diff --git a/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp b/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp index 327da9b0..e6333315 100644 --- a/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp +++ b/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp @@ -80,17 +80,6 @@ InspectorControlView::InspectorControlView(const QSize &preferredSize, QWidget * std::bind(&InspectorControlView::OnSelectionSet, this, std::placeholders::_1)); } -const wchar_t **AllSupportedExtensionsList() -{ - static const wchar_t *extensions[] = { - L"png", L"jpg", L"jpeg", L"dds", L"hdr", - L"mesh", L"import", L"path", - L"material", - nullptr - }; - return extensions; -} - static bool isInList(const wchar_t **list, const Q3DStudio::CString &inStr) { for (const wchar_t **item = list; item && *item; ++item) { @@ -142,25 +131,36 @@ void InspectorControlView::OnTimeChanged() void InspectorControlView::onFilesChanged( const Q3DStudio::TFileModificationList &inFileModificationList) { - const wchar_t **extensions = AllSupportedExtensionsList(); + static const wchar_t *materialExtensions[] = { + L"material", + nullptr + }; + static const wchar_t *fontExtensions[] = { + L"ttf", L"otf", + nullptr + }; + + bool updateFonts = false; for (size_t idx = 0, end = inFileModificationList.size(); idx < end; ++idx) { const Q3DStudio::SFileModificationRecord &record(inFileModificationList[idx]); - if (record.m_FileInfo.IsFile() - && isInList(extensions, record.m_File.GetExtension())) { - Q3DStudio::CFilePath relativePath( - Q3DStudio::CFilePath::GetRelativePathFromBase( - g_StudioApp.GetCore()->GetDoc()->GetDocumentDirectory(), - record.m_File)); - - if (record.m_ModificationType == Q3DStudio::FileModificationType::Created) - qt3dsdm::binary_sort_insert_unique(m_fileList, relativePath); - else if (record.m_ModificationType == Q3DStudio::FileModificationType::Destroyed) - qt3dsdm::binary_sort_erase(m_fileList, relativePath); - } - if (record.m_FileInfo.IsFile() - && record.m_ModificationType == Q3DStudio::FileModificationType::Modified) { - if (record.m_File.toQString() == g_StudioApp.GetCore()->GetDoc() - ->GetDocumentUIAFile(false)) { + if (record.m_FileInfo.IsFile()) { + if (isInList(materialExtensions, record.m_File.GetExtension())) { + Q3DStudio::CFilePath relativePath( + Q3DStudio::CFilePath::GetRelativePathFromBase( + g_StudioApp.GetCore()->GetDoc()->GetDocumentDirectory(), + record.m_File)); + if (record.m_ModificationType == Q3DStudio::FileModificationType::Created) + qt3dsdm::binary_sort_insert_unique(m_fileList, relativePath); + else if (record.m_ModificationType == Q3DStudio::FileModificationType::Destroyed) + qt3dsdm::binary_sort_erase(m_fileList, relativePath); + } else if (isInList(fontExtensions, record.m_File.GetExtension())) { + if (record.m_ModificationType == Q3DStudio::FileModificationType::Created + || record.m_ModificationType == Q3DStudio::FileModificationType::Destroyed) { + updateFonts = true; + } + } else if (record.m_ModificationType == Q3DStudio::FileModificationType::Modified + && record.m_File.toQString() + == g_StudioApp.GetCore()->GetDoc()->GetDocumentUIAFile(false)) { m_inspectorControlModel->refreshRenderables(); } } @@ -168,6 +168,13 @@ void InspectorControlView::onFilesChanged( std::vector<Q3DStudio::CFilePath> materials; filterMaterials(materials); m_inspectorControlModel->setMaterials(materials); + + if (updateFonts) { + // The fonts list in doc is not necessarily yet updated, so do update async + QTimer::singleShot(0, this, [this]() { + m_inspectorControlModel->updateFontValues(nullptr); + }); + } } InspectorControlView::~InspectorControlView() |