# SituationMap Qt6 Migration Status ## Summary The SituationMap module has been successfully migrated from Qt5 to Qt6 at the **source code level**. All Qt5 API calls have been updated to Qt6 equivalents. ## Completed Changes ### Qt6 API Migrations 1. **QStringView::slice() → sliced()** - Fixed in 5 files: - Symbology/sidc_codec.cpp - Symbology/sidc_builder.cpp - Symbology/sidc_builder_base.cpp - Symbology/symbol_properties.cpp - SymbologyImpl/symbol_dictionary_impl.cpp 2. **QSortFilterProxyModel filter changes** - Fixed in base_symbol_model.cpp: - beginFilterChange()/endFilterChange() → invalidateFilter() (3 occurrences) 3. **QFuture const-correctness** - Fixed in base_symbol_model.cpp: - Added `mutable` keyword to 3 lambdas capturing QFuture for waitForFinished() calls ### Directory Structure All 22 subdirectories from Qt5 have been copied to Qt6: - admin_scripts, ArcGISQt5Hack, ElevationMap, EvalApps, FunctionDialog - GeometryModel, GraphicalObjects, LayerAggregation, LocalSrv - MapImpl, MapObjects, MapObjectsImpl, MathUtils, ModuleTests - Portal, README, Resources, Rubberbands, SideBar - Symbology, SymbologyGui, Tests, UnitTests, UnitTestsGeoModel, Utils ## Build Status ### Without ArcGIS (BUILD_ARCGIS=OFF) ✅ Source code compiles successfully ⚠️ Some unrelated modules (e.g., EEMFakeServer) require Qt6WebSockets which is not installed ### With ArcGIS (BUILD_ARCGIS=ON) ❌ **Linker errors** - ArcGIS SDK binary incompatibility ## Critical Issue: ArcGIS SDK Compatibility ### Problem The ArcGIS Maps SDK for Qt v300.0.0 library (`libEsriRuntimeQt.a`) was built against **Qt 6.8+**, but the system has **Qt 6.2.4** installed. **Evidence:** - ArcGIS SDK template requires: `Qt 6.8.2` minimum (per sdk/ideintegration/ArcGISRuntimeQtTemplate300_0_0/CMakeLists.txt) - System Qt version: `6.2.4` - Linker errors show undefined Qt6 internal symbols: - `QMetaObject::invokeMethodImpl` - `QFutureInterfaceBase::hasException()` - `QMetaType::registerHelper` - `QtPrivate::QMetaTypeInterfaceWrapper` ### Required Resolution To build with ArcGIS support, one of the following is needed: 1. **Upgrade Qt to 6.8+** (recommended) - Install Qt 6.8.2 or later - Rebuild entire project against Qt 6.8+ 2. **Obtain Qt 6.2-compatible ArcGIS SDK** - Contact Esri for an ArcGIS SDK build compatible with Qt 6.2.x - Note: ArcGIS SDK v300 may not support Qt 6.2 3. **Disable ArcGIS temporarily** - Build with `-DBUILD_ARCGIS=OFF` - Complete migration of non-ArcGIS code - Re-enable ArcGIS when compatible SDK is available ## Next Steps 1. **Immediate**: Decide on ArcGIS strategy (upgrade Qt, get compatible SDK, or disable) 2. **If disabling ArcGIS**: Complete migration of remaining 27 plugin files with beginFilterChange()/endFilterChange() 3. **After ArcGIS resolution**: Run full test suite to validate migration ## Files Modified in This Session - Lts/Viewer/SituationMap/Symbology/sidc_codec.cpp - Lts/Viewer/SituationMap/Symbology/sidc_builder.cpp - Lts/Viewer/SituationMap/Symbology/sidc_builder_base.cpp - Lts/Viewer/SituationMap/Symbology/symbol_properties.cpp - Lts/Viewer/SituationMap/SymbologyImpl/symbol_dictionary_impl.cpp - Lts/Viewer/SituationMap/SymbologyImpl/base_symbol_model.cpp