From 49afa16b1ce35602547c801a92ddb53f3d6b46e1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 29 Feb 2024 00:32:35 +0100 Subject: [PATCH] [calamares] factor out variant-type-checking in debug window --- src/calamares/VariantModel.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/calamares/VariantModel.cpp b/src/calamares/VariantModel.cpp index c29c27fcf..0497577f6 100644 --- a/src/calamares/VariantModel.cpp +++ b/src/calamares/VariantModel.cpp @@ -9,6 +9,18 @@ #include "VariantModel.h" +static bool +isMapLike( const QVariant& item ) +{ + return item.canConvert< QVariantMap >(); +} + +static bool +isListLike( const QVariant& item ) +{ + return item.canConvert< QVariantList >(); +} + static void overallLength( const QVariant& item, quintptr& c, quintptr parent, VariantModel::IndexVector* skiplist ) { @@ -18,16 +30,16 @@ overallLength( const QVariant& item, quintptr& c, quintptr parent, VariantModel: } parent = c++; - if ( item.canConvert< QVariantList >() ) + if ( isMapLike( item ) ) { - for ( const auto& subitem : item.toList() ) + for ( const auto& subitem : item.toMap() ) { overallLength( subitem, c, parent, skiplist ); } } - else if ( item.canConvert< QVariantMap >() ) + else if ( isListLike( item ) ) { - for ( const auto& subitem : item.toMap() ) + for ( const auto& subitem : item.toList() ) { overallLength( subitem, c, parent, skiplist ); } @@ -179,7 +191,7 @@ VariantModel::data( const QModelIndex& index, int role ) const return QVariant(); } - if ( thing.canConvert< QVariantMap >() ) + if ( isMapLike( thing ) ) { QVariantMap the_map = thing.toMap(); const auto key = the_map.keys().at( index.row() ); @@ -192,7 +204,7 @@ VariantModel::data( const QModelIndex& index, int role ) const return the_map[ key ]; } } - else if ( thing.canConvert< QVariantList >() ) + else if ( isListLike( thing ) ) { if ( index.column() == 0 ) { @@ -255,12 +267,12 @@ VariantModel::underlying( const QModelIndex& index ) const } const auto& thing = underlying( parent( index ) ); - if ( thing.canConvert< QVariantMap >() ) + if ( isMapLike( thing ) ) { const auto& the_map = thing.toMap(); return the_map[ the_map.keys()[ index.row() ] ]; } - else if ( thing.canConvert< QVariantList >() ) + else if ( isListLike( thing ) ) { return thing.toList()[ index.row() ]; }