diff --git a/src/blackmisc/audiodevicelist.cpp b/src/blackmisc/audiodevicelist.cpp index db4e6dcc6..5d8d35395 100644 --- a/src/blackmisc/audiodevicelist.cpp +++ b/src/blackmisc/audiodevicelist.cpp @@ -60,6 +60,7 @@ namespace BlackMisc { qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/avaircraftlist.cpp b/src/blackmisc/avaircraftlist.cpp index 4bc96a91f..31c8ea611 100644 --- a/src/blackmisc/avaircraftlist.cpp +++ b/src/blackmisc/avaircraftlist.cpp @@ -41,6 +41,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } /* diff --git a/src/blackmisc/avairportlist.cpp b/src/blackmisc/avairportlist.cpp index a204e210f..9734eb1fe 100644 --- a/src/blackmisc/avairportlist.cpp +++ b/src/blackmisc/avairportlist.cpp @@ -35,6 +35,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } /* diff --git a/src/blackmisc/avatcstationlist.cpp b/src/blackmisc/avatcstationlist.cpp index 981fd493c..b0943cd5e 100644 --- a/src/blackmisc/avatcstationlist.cpp +++ b/src/blackmisc/avatcstationlist.cpp @@ -36,6 +36,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } /* diff --git a/src/blackmisc/avcallsignlist.cpp b/src/blackmisc/avcallsignlist.cpp index 6233725d3..194c77443 100644 --- a/src/blackmisc/avcallsignlist.cpp +++ b/src/blackmisc/avcallsignlist.cpp @@ -37,6 +37,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace } // namespace diff --git a/src/blackmisc/hwkeyboardkeylist.cpp b/src/blackmisc/hwkeyboardkeylist.cpp index 9e32a5d28..c1e5291ed 100644 --- a/src/blackmisc/hwkeyboardkeylist.cpp +++ b/src/blackmisc/hwkeyboardkeylist.cpp @@ -33,6 +33,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/iconlist.cpp b/src/blackmisc/iconlist.cpp index af84974f2..11786aba3 100644 --- a/src/blackmisc/iconlist.cpp +++ b/src/blackmisc/iconlist.cpp @@ -28,6 +28,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } const CIconList &CIconList::allIcons() diff --git a/src/blackmisc/logcategorylist.cpp b/src/blackmisc/logcategorylist.cpp index a1c7b002f..3dad6c268 100644 --- a/src/blackmisc/logcategorylist.cpp +++ b/src/blackmisc/logcategorylist.cpp @@ -54,5 +54,6 @@ namespace BlackMisc { qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } diff --git a/src/blackmisc/namevariantpairlist.cpp b/src/blackmisc/namevariantpairlist.cpp index 0266ef229..01c0616a7 100644 --- a/src/blackmisc/namevariantpairlist.cpp +++ b/src/blackmisc/namevariantpairlist.cpp @@ -58,5 +58,6 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/nwaircraftmappinglist.cpp b/src/blackmisc/nwaircraftmappinglist.cpp index e11574dd0..73ebd78b3 100644 --- a/src/blackmisc/nwaircraftmappinglist.cpp +++ b/src/blackmisc/nwaircraftmappinglist.cpp @@ -61,6 +61,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/nwaircraftmodellist.cpp b/src/blackmisc/nwaircraftmodellist.cpp index 2aed1f268..297ba8381 100644 --- a/src/blackmisc/nwaircraftmodellist.cpp +++ b/src/blackmisc/nwaircraftmodellist.cpp @@ -44,6 +44,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/nwclientlist.cpp b/src/blackmisc/nwclientlist.cpp index b42e6e7a3..5698859e1 100644 --- a/src/blackmisc/nwclientlist.cpp +++ b/src/blackmisc/nwclientlist.cpp @@ -36,6 +36,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/nwserverlist.cpp b/src/blackmisc/nwserverlist.cpp index 5de8c94e0..8150369d4 100644 --- a/src/blackmisc/nwserverlist.cpp +++ b/src/blackmisc/nwserverlist.cpp @@ -36,6 +36,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/nwtextmessagelist.cpp b/src/blackmisc/nwtextmessagelist.cpp index 95f31a347..fcbd93d1b 100644 --- a/src/blackmisc/nwtextmessagelist.cpp +++ b/src/blackmisc/nwtextmessagelist.cpp @@ -120,6 +120,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } /* diff --git a/src/blackmisc/nwuserlist.cpp b/src/blackmisc/nwuserlist.cpp index a565329b1..bd0d928dc 100644 --- a/src/blackmisc/nwuserlist.cpp +++ b/src/blackmisc/nwuserlist.cpp @@ -28,6 +28,7 @@ namespace BlackMisc { qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/propertyindexlist.cpp b/src/blackmisc/propertyindexlist.cpp index 88bdcd91c..0519e06d7 100644 --- a/src/blackmisc/propertyindexlist.cpp +++ b/src/blackmisc/propertyindexlist.cpp @@ -34,6 +34,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } // namespace diff --git a/src/blackmisc/setkeyboardhotkeylist.cpp b/src/blackmisc/setkeyboardhotkeylist.cpp index ade7139da..6d9961d37 100644 --- a/src/blackmisc/setkeyboardhotkeylist.cpp +++ b/src/blackmisc/setkeyboardhotkeylist.cpp @@ -55,6 +55,7 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } /* diff --git a/src/blackmisc/statusmessagelist.cpp b/src/blackmisc/statusmessagelist.cpp index aea7fb22a..43d00f665 100644 --- a/src/blackmisc/statusmessagelist.cpp +++ b/src/blackmisc/statusmessagelist.cpp @@ -46,5 +46,6 @@ namespace BlackMisc qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } } diff --git a/src/blackmisc/valueobject_policy.h b/src/blackmisc/valueobject_policy.h index fa920d5ac..3339d987c 100644 --- a/src/blackmisc/valueobject_policy.h +++ b/src/blackmisc/valueobject_policy.h @@ -21,6 +21,9 @@ namespace BlackMisc template struct CValueObjectStdTuplePolicy; + template + void registerMetaValueType(); + namespace Policy { namespace Private @@ -40,7 +43,15 @@ namespace BlackMisc { //! Register with QMetaType template - static void registerImpl() { qRegisterMetaType(); qDBusRegisterMetaType(); } + static void registerImpl() { qRegisterMetaType(); qDBusRegisterMetaType(); maybeRegisterMetaValueType(); } + + private: + template + static void maybeRegisterMetaValueType() { maybeRegisterMetaValueType(std::is_base_of()); } + template + static void maybeRegisterMetaValueType(std::true_type) { BlackMisc::registerMetaValueType(); } + template + static void maybeRegisterMetaValueType(std::false_type) {} }; //! CValueObjectStdTuple registerMetadata policy which inherits the policy of the base class diff --git a/src/blackmisc/voiceroomlist.cpp b/src/blackmisc/voiceroomlist.cpp index 045a3f29a..85644b619 100644 --- a/src/blackmisc/voiceroomlist.cpp +++ b/src/blackmisc/voiceroomlist.cpp @@ -33,6 +33,7 @@ namespace BlackMisc { qRegisterMetaType(); qDBusRegisterMetaType(); + registerMetaValueType(); } /* diff --git a/src/blacksim/fscommon/aircraftcfgentrieslist.cpp b/src/blacksim/fscommon/aircraftcfgentrieslist.cpp index 3aeb931dc..ecf6c9ac5 100644 --- a/src/blacksim/fscommon/aircraftcfgentrieslist.cpp +++ b/src/blacksim/fscommon/aircraftcfgentrieslist.cpp @@ -105,6 +105,7 @@ namespace BlackSim qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + BlackMisc::registerMetaValueType(); } } // namespace diff --git a/src/blacksim/fscommon/aircraftmappinglist.cpp b/src/blacksim/fscommon/aircraftmappinglist.cpp index 42b74c672..7488ffb67 100644 --- a/src/blacksim/fscommon/aircraftmappinglist.cpp +++ b/src/blacksim/fscommon/aircraftmappinglist.cpp @@ -15,6 +15,7 @@ namespace BlackSim qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + BlackMisc::registerMetaValueType(); } } } // namespace diff --git a/src/blacksim/simulatorinfolist.cpp b/src/blacksim/simulatorinfolist.cpp index 6e0947374..1bb04d4be 100644 --- a/src/blacksim/simulatorinfolist.cpp +++ b/src/blacksim/simulatorinfolist.cpp @@ -28,6 +28,7 @@ namespace BlackSim qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); + BlackMisc::registerMetaValueType(); } } // namespace BlackSim