summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-08-23 15:12:56 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-08-24 07:33:03 +0000
commitae39078bc8ea7c9ca6e63e041dbbe8b9582d8698 (patch)
treef0b5b2d4c4cd2a4487147b9ccc60baf136f9328c /src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp
parent006177df780dccb9faf5e9251f832e83ee52317b (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.cpp63
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()