QGIS API Documentation  3.21.0-Master (5b68dc587e)
qgsproviderutils.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsproviderutils.cpp
3  ----------------------------
4  begin : June 2021
5  copyright : (C) 2021 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #include "qgsproviderutils.h"
19 
20 #include <QFileInfo>
21 
22 bool QgsProviderUtils::sublayerDetailsAreIncomplete( const QList<QgsProviderSublayerDetails> &details, SublayerCompletenessFlags flags )
23 {
24  const bool ignoreUnknownGeometryTypes = flags & SublayerCompletenessFlag::IgnoreUnknownGeometryType;
25  const bool ignoreUnknownFeatureCount = flags & SublayerCompletenessFlag::IgnoreUnknownFeatureCount;
26 
27  for ( const QgsProviderSublayerDetails &sublayer : details )
28  {
29  switch ( sublayer.type() )
30  {
32  if ( sublayer.skippedContainerScan()
33  || ( !ignoreUnknownGeometryTypes && sublayer.wkbType() == QgsWkbTypes::Unknown )
34  || ( !ignoreUnknownFeatureCount &&
35  ( sublayer.featureCount() == static_cast< long long >( Qgis::FeatureCountState::Uncounted )
36  || sublayer.featureCount() == static_cast< long long >( Qgis::FeatureCountState::UnknownCount ) ) ) )
37  return true;
38  break;
39 
46  break;
47  }
48  }
49 
50  return false;
51 }
52 
53 QString QgsProviderUtils::suggestLayerNameFromFilePath( const QString &path )
54 {
55  const QFileInfo info( path );
56  // default to base name of file
57  QString name = info.completeBaseName();
58 
59  // special handling for .adf files -- use directory as base name, not the unhelpful .adf file name
60  if ( info.suffix().compare( QLatin1String( "adf" ), Qt::CaseInsensitive ) == 0 )
61  {
62  const QString dirName = info.path();
63  name = QFileInfo( dirName ).completeBaseName();
64  }
65  // special handling for ept.json files -- use directory as base name
66  else if ( info.fileName().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
67  {
68  const QString dirName = info.path();
69  name = QFileInfo( dirName ).completeBaseName();
70  }
71 
72  return name;
73 }
Contains details about a sub layer available from a dataset.
static bool sublayerDetailsAreIncomplete(const QList< QgsProviderSublayerDetails > &details, QgsProviderUtils::SublayerCompletenessFlags flags=QgsProviderUtils::SublayerCompletenessFlags())
Returns true if the sublayer details are incomplete, and require a more in-depth scan.
static QString suggestLayerNameFromFilePath(const QString &path)
Suggests a suitable layer name given only a file path.
@ IgnoreUnknownGeometryType
Indicates that an unknown geometry type should not be considered as incomplete.
@ IgnoreUnknownFeatureCount
Indicates that an unknown feature count should not be considered as incomplete.
@ Uncounted
Feature count not yet computed.
@ UnknownCount
Provider returned an unknown feature count.
@ PointCloudLayer
Added in 3.18.
@ MeshLayer
Added in 3.2.
@ VectorTileLayer
Added in 3.14.
@ AnnotationLayer
Contains freeform, georeferenced annotations. Added in QGIS 3.16.