Add QgsLayerItem::iconForWkbType() and QgsWkbTypes::translatedDisplayString()

and use them to avoid a lot of copy&paste in "New layer XXXX" dialogs and
providers.
This commit is contained in:
Even Rouault 2020-11-10 19:15:06 +01:00 committed by Nyall Dawson
parent 40569f414e
commit af9da65c23
32 changed files with 254 additions and 228 deletions

View File

@ -251,7 +251,14 @@ GeometryCollections are reported as QgsWkbTypes.UnknownGeometry.
static QString displayString( Type type ) /HoldGIL/;
%Docstring
Returns a display string type for a WKB type, e.g., the geometry name used in WKT geometry representations.
Returns a non-translated display string type for a WKB type, e.g., the geometry name used in WKT geometry representations.
%End
static QString translatedDisplayString( Type type ) /HoldGIL/;
%Docstring
Returns a translated display string type for a WKB type, e.g., the geometry name used in WKT geometry representations.
.. versionadded:: 3.18
%End
static QString geometryDisplayString( GeometryType type ) /HoldGIL/;

View File

@ -576,6 +576,14 @@ Use QgsDataItemGuiProvider.deleteLayer instead
protected:
public:
static QIcon iconForWkbType( QgsWkbTypes::Type type );
%Docstring
Returns the icon for a vector layer whose geometry type is provided.
.. versionadded:: 3.18
%End
static QIcon iconPoint();
static QIcon iconLine();
static QIcon iconPolygon();

View File

@ -24,6 +24,7 @@
#include "qgsapplication.h"
#include "qgsabstractdatabaseproviderconnection.h"
#include "qgisapp.h" // <- for theme icons
#include "qgsdataitem.h"
#include "qgsvectorlayer.h"
#include "qgsproject.h"
#include "qgscoordinatereferencesystem.h"
@ -50,13 +51,18 @@ QgsNewSpatialiteLayerDialog::QgsNewSpatialiteLayerDialog( QWidget *parent, Qt::W
setupUi( this );
QgsGui::enableAutoGeometryRestore( this );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) ), tr( "No Geometry" ), QString() );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "Point" ), QStringLiteral( "POINT" ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "Line" ), QStringLiteral( "LINESTRING" ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "Polygon" ), QStringLiteral( "POLYGON" ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "MultiPoint" ), QStringLiteral( "MULTIPOINT" ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "MultiLine" ), QStringLiteral( "MULTILINESTRING" ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "MultiPolygon" ), QStringLiteral( "MULTIPOLYGON" ) );
const auto addGeomItem = [this]( QgsWkbTypes::Type type, const QString & sqlType )
{
mGeometryTypeBox->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), sqlType );
};
addGeomItem( QgsWkbTypes::NoGeometry, QString() );
addGeomItem( QgsWkbTypes::Point, QStringLiteral( "POINT" ) );
addGeomItem( QgsWkbTypes::LineString, QStringLiteral( "LINESTRING" ) );
addGeomItem( QgsWkbTypes::Polygon, QStringLiteral( "POLYGON" ) );
addGeomItem( QgsWkbTypes::MultiPoint, QStringLiteral( "MULTIPOINT" ) );
addGeomItem( QgsWkbTypes::MultiLineString, QStringLiteral( "MULTILINESTRING" ) );
addGeomItem( QgsWkbTypes::MultiPolygon, QStringLiteral( "MULTIPOLYGON" ) );
mGeometryTypeBox->setCurrentIndex( -1 );
pbnFindSRID->setEnabled( false );

View File

@ -152,6 +152,74 @@ QString QgsWkbTypes::displayString( Type type )
return it->mName;
}
QString QgsWkbTypes::translatedDisplayString( Type type )
{
switch ( type )
{
case Unknown: return QObject::tr( "Unknown" );
case Point: return QObject::tr( "Point" );
case LineString: return QObject::tr( "LineString" );
case Polygon: return QObject::tr( "Polygon" );
case Triangle: return QObject::tr( "Triangle" );
case MultiPoint: return QObject::tr( "MultiPoint" );
case MultiLineString: return QObject::tr( "MultiLine" );
case MultiPolygon: return QObject::tr( "MultiPolygon" );
case GeometryCollection: return QObject::tr( "GeometryCollection" );
case CircularString: return QObject::tr( "CircularString" );
case CompoundCurve: return QObject::tr( "CompoundCurve" );
case CurvePolygon: return QObject::tr( "CurvePolygon" );
case MultiCurve: return QObject::tr( "MultiCurve" );
case MultiSurface: return QObject::tr( "MultiSurface" );
case NoGeometry: return QObject::tr( "No Geometry" );
case PointZ: return QObject::tr( "PointZ" );
case LineStringZ: return QObject::tr( "LineStringZ" );
case PolygonZ: return QObject::tr( "PolygonZ" );
case TriangleZ: return QObject::tr( "TriangleZ" );
case MultiPointZ: return QObject::tr( "MultiPointZ" );
case MultiLineStringZ: return QObject::tr( "MultiLineZ" );
case MultiPolygonZ: return QObject::tr( "MultiPolygonZ" );
case GeometryCollectionZ: return QObject::tr( "GeometryCollectionZ" );
case CircularStringZ: return QObject::tr( "CircularStringZ" );
case CompoundCurveZ: return QObject::tr( "CompoundCurveZ" );
case CurvePolygonZ: return QObject::tr( "CurvePolygonZ" );
case MultiCurveZ: return QObject::tr( "MultiCurveZ" );
case MultiSurfaceZ: return QObject::tr( "MultiSurfaceZ" );
case PointM: return QObject::tr( "PointM" );
case LineStringM: return QObject::tr( "LineStringM" );
case PolygonM: return QObject::tr( "PolygonM" );
case TriangleM: return QObject::tr( "TriangleM" );
case MultiPointM: return QObject::tr( "MultiPointM" );
case MultiLineStringM: return QObject::tr( "MultiLineStringM" );
case MultiPolygonM: return QObject::tr( "MultiPolygonM" );
case GeometryCollectionM: return QObject::tr( "GeometryCollectionM" );
case CircularStringM: return QObject::tr( "CircularStringM" );
case CompoundCurveM: return QObject::tr( "CompoundCurveM" );
case CurvePolygonM: return QObject::tr( "CurvePolygonM" );
case MultiCurveM: return QObject::tr( "MultiCurveM" );
case MultiSurfaceM: return QObject::tr( "MultiSurfaceM" );
case PointZM: return QObject::tr( "PointZM" );
case LineStringZM: return QObject::tr( "LineStringZM" );
case PolygonZM: return QObject::tr( "PolygonZM" );
case MultiPointZM: return QObject::tr( "MultiPointZM" );
case MultiLineStringZM: return QObject::tr( "MultiLineZM" );
case MultiPolygonZM: return QObject::tr( "MultiPolygonZM" );
case GeometryCollectionZM: return QObject::tr( "GeometryCollectionZM" );
case CircularStringZM: return QObject::tr( "CircularStringZM" );
case CompoundCurveZM: return QObject::tr( "CompoundCurveZM" );
case CurvePolygonZM: return QObject::tr( "CurvePolygonZM" );
case MultiCurveZM: return QObject::tr( "MultiCurveZM" );
case MultiSurfaceZM: return QObject::tr( "MultiSurfaceZM" );
case TriangleZM: return QObject::tr( "TriangleZM" );
case Point25D: return QObject::tr( "Point25D" );
case LineString25D: return QObject::tr( "LineString25D" );
case Polygon25D: return QObject::tr( "Polygon25D" );
case MultiPoint25D: return QObject::tr( "MultiPoint25D" );
case MultiLineString25D: return QObject::tr( "MultiLineString25D" );
case MultiPolygon25D: return QObject::tr( "MultiPolygon25D" );
}
return QString();
}
QString QgsWkbTypes::geometryDisplayString( QgsWkbTypes::GeometryType type )
{

View File

@ -1014,10 +1014,17 @@ class CORE_EXPORT QgsWkbTypes
}
/**
* Returns a display string type for a WKB type, e.g., the geometry name used in WKT geometry representations.
* Returns a non-translated display string type for a WKB type, e.g., the geometry name used in WKT geometry representations.
*/
static QString displayString( Type type ) SIP_HOLDGIL;
/**
* Returns a translated display string type for a WKB type, e.g., the geometry name used in WKT geometry representations.
*
* \since QGIS 3.18
*/
static QString translatedDisplayString( Type type ) SIP_HOLDGIL;
/**
* Returns a display string for a geometry type.
*

View File

@ -51,6 +51,26 @@
#include "cpl_string.h"
// shared icons
QIcon QgsLayerItem::iconForWkbType( QgsWkbTypes::Type type )
{
QgsWkbTypes::GeometryType geomType = QgsWkbTypes::geometryType( QgsWkbTypes::Type( type ) );
switch ( geomType )
{
case QgsWkbTypes::NullGeometry:
return iconTable();
case QgsWkbTypes::PointGeometry:
return iconPoint();
case QgsWkbTypes::LineGeometry:
return iconLine();
case QgsWkbTypes::PolygonGeometry:
return iconPolygon();
default:
break;
}
return iconDefault();
}
QIcon QgsLayerItem::iconPoint()
{
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) );

View File

@ -603,6 +603,13 @@ class CORE_EXPORT QgsLayerItem : public QgsDataItem
QStringList mSupportFormats;
public:
/**
* Returns the icon for a vector layer whose geometry type is provided.
* \since QGIS 3.18
*/
static QIcon iconForWkbType( QgsWkbTypes::Type type );
static QIcon iconPoint();
static QIcon iconLine();
static QIcon iconPolygon();

View File

@ -16,6 +16,7 @@
* *
***************************************************************************/
#include "qgslogger.h"
#include "qgsdataitem.h"
#include "qgsvectorlayersaveasdialog.h"
#include "qgsprojectionselectiondialog.h"
#include "qgsvectordataprovider.h"
@ -130,13 +131,18 @@ void QgsVectorLayerSaveAsDialog::setup()
mFormatComboBox->setCurrentIndex( mFormatComboBox->findData( format ) );
mFormatComboBox->blockSignals( false );
const auto addGeomItem = [this]( QgsWkbTypes::Type type )
{
mGeometryTypeComboBox->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
};
//add geometry types to combobox
mGeometryTypeComboBox->addItem( tr( "Automatic" ), -1 );
mGeometryTypeComboBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), QgsWkbTypes::displayString( QgsWkbTypes::Point ), QgsWkbTypes::Point );
mGeometryTypeComboBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), QgsWkbTypes::displayString( QgsWkbTypes::LineString ), QgsWkbTypes::LineString );
mGeometryTypeComboBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), QgsWkbTypes::displayString( QgsWkbTypes::Polygon ), QgsWkbTypes::Polygon );
mGeometryTypeComboBox->addItem( QgsWkbTypes::displayString( QgsWkbTypes::GeometryCollection ), QgsWkbTypes::GeometryCollection );
mGeometryTypeComboBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) ), tr( "No geometry" ), QgsWkbTypes::NoGeometry );
addGeomItem( QgsWkbTypes::Point );
addGeomItem( QgsWkbTypes::LineString );
addGeomItem( QgsWkbTypes::Polygon );
mGeometryTypeComboBox->addItem( QgsWkbTypes::translatedDisplayString( QgsWkbTypes::GeometryCollection ), QgsWkbTypes::GeometryCollection );
addGeomItem( QgsWkbTypes::NoGeometry );
mGeometryTypeComboBox->setCurrentIndex( mGeometryTypeComboBox->findData( -1 ) );
mEncodingComboBox->addItems( QgsVectorDataProvider::availableEncodings() );

View File

@ -18,6 +18,7 @@
#include "qgsidentifymenu.h"
#include "qgsapplication.h"
#include "qgsactionmanager.h"
#include "qgsdataitem.h"
#include "qgshighlight.h"
#include "qgsmapcanvas.h"
#include "qgsactionmenu.h"
@ -327,21 +328,7 @@ void QgsIdentifyMenu::addVectorLayer( QgsVectorLayer *layer, const QList<QgsMapT
// case 1 or 2
if ( layerAction )
{
// icons
switch ( layer->geometryType() )
{
case QgsWkbTypes::PointGeometry:
layerAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ) );
break;
case QgsWkbTypes::LineGeometry:
layerAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ) );
break;
case QgsWkbTypes::PolygonGeometry:
layerAction->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ) );
break;
default:
break;
}
layerAction->setIcon( QgsLayerItem::iconForWkbType( layer->wkbType() ) );
// add layer action to the top menu
layerAction->setData( QVariant::fromValue<ActionData>( ActionData( layer ) ) );

View File

@ -21,6 +21,7 @@
#include "qgis.h"
#include "qgsapplication.h"
#include "qgsdataitem.h"
#include "qgsproviderregistry.h"
#include "qgsvectorlayer.h"
#include "qgsproject.h"
@ -68,22 +69,28 @@ QgsNewGeoPackageLayerDialog::QgsNewGeoPackageLayerDialog( QWidget *parent, Qt::W
mAddAttributeButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionNewAttribute.svg" ) ) );
mRemoveAttributeButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionDeleteAttribute.svg" ) ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) ), tr( "No Geometry" ), wkbNone );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "Point" ), wkbPoint );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "Line" ), wkbLineString );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "Polygon" ), wkbPolygon );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "MultiPoint" ), wkbMultiPoint );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "MultiLine" ), wkbMultiLineString );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "MultiPolygon" ), wkbMultiPolygon );
const auto addGeomItem = [this]( OGRwkbGeometryType ogrGeomType )
{
QgsWkbTypes::Type qgsType = QgsOgrUtils::ogrGeometryTypeToQgsWkbType( ogrGeomType );
mGeometryTypeBox->addItem( QgsLayerItem::iconForWkbType( qgsType ), QgsWkbTypes::translatedDisplayString( qgsType ), ogrGeomType );
};
addGeomItem( wkbNone );
addGeomItem( wkbPoint );
addGeomItem( wkbLineString );
addGeomItem( wkbPolygon );
addGeomItem( wkbMultiPoint );
addGeomItem( wkbMultiLineString );
addGeomItem( wkbMultiPolygon );
#if 0
// QGIS always create CompoundCurve and there's no real interest of having just CircularString. CompoundCurve are more useful
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "CircularString" ), wkbCircularString );
addGeomItem( wkbCircularString );
#endif
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "CompoundCurve" ), wkbCompoundCurve );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "CurvePolygon" ), wkbCurvePolygon );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "MultiCurve" ), wkbMultiCurve );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "MultiSurface" ), wkbMultiSurface );
addGeomItem( wkbCompoundCurve );
addGeomItem( wkbCurvePolygon );
addGeomItem( wkbMultiCurve );
addGeomItem( wkbMultiSurface );
mGeometryTypeBox->setCurrentIndex( -1 );
mGeometryWithZCheckBox->setEnabled( false );

View File

@ -18,6 +18,7 @@
#include "qgsnewmemorylayerdialog.h"
#include "qgsapplication.h"
#include "qgis.h"
#include "qgsdataitem.h"
#include "qgscoordinatereferencesystem.h"
#include "qgsproviderregistry.h"
#include "qgsvectordataprovider.h"
@ -57,17 +58,23 @@ QgsNewMemoryLayerDialog::QgsNewMemoryLayerDialog( QWidget *parent, Qt::WindowFla
mNameLineEdit->setText( tr( "New scratch layer" ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) ), tr( "No Geometry" ), QgsWkbTypes::NoGeometry );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "Point" ), QgsWkbTypes::Point );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "LineString" ), QgsWkbTypes::LineString );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "CompoundCurve" ), QgsWkbTypes::CompoundCurve );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "Polygon" ), QgsWkbTypes::Polygon );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "CurvePolygon" ), QgsWkbTypes::CurvePolygon );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "MultiPoint" ), QgsWkbTypes::MultiPoint );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "MultiLineString" ), QgsWkbTypes::MultiLineString );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "MultiCurve" ), QgsWkbTypes::MultiCurve );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "MultiPolygon" ), QgsWkbTypes::MultiPolygon );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "MultiSurface" ), QgsWkbTypes::MultiSurface );
const QgsWkbTypes::Type geomTypes[] =
{
QgsWkbTypes::NoGeometry,
QgsWkbTypes::Point,
QgsWkbTypes::LineString,
QgsWkbTypes::CompoundCurve,
QgsWkbTypes::Polygon,
QgsWkbTypes::CurvePolygon,
QgsWkbTypes::MultiPoint,
QgsWkbTypes::MultiLineString,
QgsWkbTypes::MultiCurve,
QgsWkbTypes::MultiPolygon,
QgsWkbTypes::MultiSurface,
};
for ( const auto type : geomTypes )
mGeometryTypeBox->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
mGeometryTypeBox->setCurrentIndex( -1 );
mGeometryWithZCheckBox->setEnabled( false );

View File

@ -15,6 +15,7 @@
* *
***************************************************************************/
#include "qgsdataitem.h"
#include "qgsnewvectorlayerdialog.h"
#include "qgsapplication.h"
#include "qgsfilewidget.h"
@ -56,11 +57,17 @@ QgsNewVectorLayerDialog::QgsNewVectorLayerDialog( QWidget *parent, Qt::WindowFla
mWidth->setValidator( new QIntValidator( 1, 255, this ) );
mPrecision->setValidator( new QIntValidator( 0, 15, this ) );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) ), tr( "No Geometry" ), QgsWkbTypes::NoGeometry );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "Point" ), QgsWkbTypes::Point );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "MultiPoint" ), QgsWkbTypes::MultiPoint );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "Line" ), QgsWkbTypes::LineString );
mGeometryTypeBox->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "Polygon" ), QgsWkbTypes::Polygon );
const QgsWkbTypes::Type geomTypes[] =
{
QgsWkbTypes::NoGeometry,
QgsWkbTypes::Point,
QgsWkbTypes::MultiPoint,
QgsWkbTypes::LineString,
QgsWkbTypes::Polygon,
};
for ( const auto type : geomTypes )
mGeometryTypeBox->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
mGeometryTypeBox->setCurrentIndex( -1 );
mOkButton = buttonBox->button( QDialogButtonBox::Ok );

View File

@ -14,6 +14,7 @@
* *
***************************************************************************/
#include "qgsnewvectortabledialog.h"
#include "qgsdataitem.h"
#include "qgsvectorlayer.h"
#include "qgslogger.h"
#include "qgsgui.h"
@ -137,23 +138,29 @@ QgsNewVectorTableDialog::QgsNewVectorTableDialog( QgsAbstractDatabaseProviderCon
// geometry types
const bool hasSinglePart { conn->geometryColumnCapabilities().testFlag( QgsAbstractDatabaseProviderConnection::GeometryColumnCapability::SinglePart ) };
const auto addGeomItem = [this]( QgsWkbTypes::Type type )
{
mGeomTypeCbo->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
};
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconTableLayer.svg" ) ), tr( "No Geometry" ), QgsWkbTypes::Type::NoGeometry );
if ( hasSinglePart )
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconPointLayer.svg" ) ), tr( "Point" ), QgsWkbTypes::Type::Point );
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconPointLayer.svg" ) ), tr( "MultiPoint" ), QgsWkbTypes::Type::MultiPoint );
addGeomItem( QgsWkbTypes::Type::Point );
addGeomItem( QgsWkbTypes::Type::MultiPoint );
if ( hasSinglePart )
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconLineLayer.svg" ) ), tr( "Line" ), QgsWkbTypes::Type::LineString );
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconLineLayer.svg" ) ), tr( "MultiLine" ), QgsWkbTypes::Type::MultiLineString );
addGeomItem( QgsWkbTypes::Type::LineString );
addGeomItem( QgsWkbTypes::Type::MultiLineString );
if ( hasSinglePart )
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconPolygonLayer.svg" ) ), tr( "Polygon" ), QgsWkbTypes::Type::Polygon );
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconPolygonLayer.svg" ) ), tr( "MultiPolygon" ), QgsWkbTypes::Type::MultiPolygon );
addGeomItem( QgsWkbTypes::Type::Polygon );
addGeomItem( QgsWkbTypes::Type::MultiPolygon );
if ( conn->geometryColumnCapabilities().testFlag( QgsAbstractDatabaseProviderConnection::GeometryColumnCapability::Curves ) )
{
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconLineLayer.svg" ) ), tr( "CompoundCurve" ), QgsWkbTypes::Type::CompoundCurve );
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconPolygonLayer.svg" ) ), tr( "CurvePolygon" ), QgsWkbTypes::Type::CurvePolygon );
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconLineLayer.svg" ) ), tr( "MultiCurve" ), QgsWkbTypes::Type::MultiCurve );
mGeomTypeCbo->addItem( QgsApplication::getThemeIcon( QStringLiteral( "mIconPolygonLayer.svg" ) ), tr( "MultiSurface" ), QgsWkbTypes::Type::MultiSurface );
addGeomItem( QgsWkbTypes::Type::CompoundCurve );
addGeomItem( QgsWkbTypes::Type::CurvePolygon );
addGeomItem( QgsWkbTypes::Type::MultiCurve );
addGeomItem( QgsWkbTypes::Type::MultiSurface );
}
mGeomTypeCbo->setCurrentIndex( 0 );

View File

@ -13,6 +13,7 @@
* *
***************************************************************************/
#include "qgsdataitem.h"
#include "qgstextformatwidget.h"
#include "qgsmapcanvas.h"
#include "qgscharacterselectordialog.h"
@ -473,9 +474,9 @@ void QgsTextFormatWidget::initWidget()
updateCalloutFrameStatus();
} );
mGeometryGeneratorType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "Polygon / MultiPolygon" ), QgsWkbTypes::GeometryType::PolygonGeometry );
mGeometryGeneratorType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "LineString / MultiLineString" ), QgsWkbTypes::GeometryType::LineGeometry );
mGeometryGeneratorType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "Point / MultiPoint" ), QgsWkbTypes::GeometryType::PointGeometry );
mGeometryGeneratorType->addItem( QgsLayerItem::iconForWkbType( QgsWkbTypes::Polygon ), tr( "Polygon / MultiPolygon" ), QgsWkbTypes::GeometryType::PolygonGeometry );
mGeometryGeneratorType->addItem( QgsLayerItem::iconForWkbType( QgsWkbTypes::LineString ), tr( "LineString / MultiLineString" ), QgsWkbTypes::GeometryType::LineGeometry );
mGeometryGeneratorType->addItem( QgsLayerItem::iconForWkbType( QgsWkbTypes::Point ), tr( "Point / MultiPoint" ), QgsWkbTypes::GeometryType::PointGeometry );
// set correct initial tab to match displayed setting page
whileBlocking( mOptionsTab )->setCurrentIndex( mLabelStackedWidget->currentIndex() );

View File

@ -16,6 +16,7 @@
#include "qgsstylemanagerdialog.h"
#include "qgsstylesavedialog.h"
#include "qgsdataitem.h"
#include "qgssymbol.h"
#include "qgssymbollayerutils.h"
#include "qgscolorramp.h"
@ -331,13 +332,13 @@ QgsStyleManagerDialog::QgsStyleManagerDialog( QgsStyle *style, QWidget *parent,
mMenuBtnAddItemLegendPatchShape = new QMenu( this );
mMenuBtnAddItemSymbol3D = new QMenu( this );
QAction *item = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mIconPointLayer.svg" ) ), tr( "Marker…" ), this );
QAction *item = new QAction( QgsLayerItem::iconPoint(), tr( "Marker…" ), this );
connect( item, &QAction::triggered, this, [ = ]( bool ) { addSymbol( QgsSymbol::Marker ); } );
mMenuBtnAddItemAll->addAction( item );
item = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mIconLineLayer.svg" ) ), tr( "Line…" ), this );
item = new QAction( QgsLayerItem::iconLine(), tr( "Line…" ), this );
connect( item, &QAction::triggered, this, [ = ]( bool ) { addSymbol( QgsSymbol::Line ); } );
mMenuBtnAddItemAll->addAction( item );
item = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "mIconPolygonLayer.svg" ) ), tr( "Fill…" ), this );
item = new QAction( QgsLayerItem::iconPolygon(), tr( "Fill…" ), this );
connect( item, &QAction::triggered, this, [ = ]( bool ) { addSymbol( QgsSymbol::Fill ); } );
mMenuBtnAddItemAll->addAction( item );
mMenuBtnAddItemAll->addSeparator();

View File

@ -16,6 +16,7 @@
#include "qgssymbollayerwidget.h"
#include "qgsdataitem.h"
#include "qgslinesymbollayer.h"
#include "qgsmarkersymbollayer.h"
#include "qgsfillsymbollayer.h"
@ -4160,9 +4161,9 @@ QgsGeometryGeneratorSymbolLayerWidget::QgsGeometryGeneratorSymbolLayerWidget( Qg
modificationExpressionSelector->setMultiLine( true );
modificationExpressionSelector->setLayer( const_cast<QgsVectorLayer *>( vl ) );
modificationExpressionSelector->registerExpressionContextGenerator( this );
cbxGeometryType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) ), tr( "Polygon / MultiPolygon" ), QgsSymbol::Fill );
cbxGeometryType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) ), tr( "LineString / MultiLineString" ), QgsSymbol::Line );
cbxGeometryType->addItem( QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) ), tr( "Point / MultiPoint" ), QgsSymbol::Marker );
cbxGeometryType->addItem( QgsLayerItem::iconPolygon(), tr( "Polygon / MultiPolygon" ), QgsSymbol::Fill );
cbxGeometryType->addItem( QgsLayerItem::iconLine(), tr( "LineString / MultiLineString" ), QgsSymbol::Line );
cbxGeometryType->addItem( QgsLayerItem::iconPoint(), tr( "Point / MultiPoint" ), QgsSymbol::Marker );
connect( modificationExpressionSelector, &QgsExpressionLineEdit::expressionChanged, this, &QgsGeometryGeneratorSymbolLayerWidget::updateExpression );
connect( cbxGeometryType, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsGeometryGeneratorSymbolLayerWidget::updateSymbolType );
}

View File

@ -24,6 +24,7 @@
#include "qgsfeaturepool.h"
#include "qgsvectordataproviderfeaturepool.h"
#include "qgsdataitem.h"
#include "qgsfeatureiterator.h"
#include "qgisinterface.h"
#include "qgsproject.h"
@ -114,16 +115,16 @@ void QgsGeometryCheckerSetupTab::updateLayers()
bool supportedGeometryType = true;
if ( layer->geometryType() == QgsWkbTypes::PointGeometry )
{
item->setIcon( QgsApplication::getThemeIcon( "/mIconPointLayer.svg" ) );
item->setIcon( QgsLayerItem::iconPoint() );
}
else if ( layer->geometryType() == QgsWkbTypes::LineGeometry )
{
item->setIcon( QgsApplication::getThemeIcon( "/mIconLineLayer.svg" ) );
item->setIcon( QgsLayerItem::iconLine() );
ui.comboLineLayerIntersection->addItem( layer->name(), layer->id() );
}
else if ( layer->geometryType() == QgsWkbTypes::PolygonGeometry )
{
item->setIcon( QgsApplication::getThemeIcon( "/mIconPolygonLayer.svg" ) );
item->setIcon( QgsLayerItem::iconPolygon() );
ui.comboLineLayerIntersection->addItem( layer->name(), layer->id() );
ui.comboBoxFollowBoundaries->addItem( layer->name(), layer->id() );
}

View File

@ -27,6 +27,7 @@
#include "qgsapplication.h"
#include "qgsmanageconnectionsdialog.h"
#include "qgsquerybuilder.h"
#include "qgsdataitem.h"
#include "qgsdatasourceuri.h"
#include "qgsvectorlayer.h"
#include "qgssettings.h"
@ -62,7 +63,7 @@ QWidget *QgsDb2SourceSelectDelegate::createEditor( QWidget *parent, const QStyle
<< QgsWkbTypes::MultiPolygon
<< QgsWkbTypes::NoGeometry )
{
cb->addItem( QgsDb2TableModel::iconForWkbType( type ), QgsWkbTypes::displayString( type ), type );
cb->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
}
cb->setCurrentIndex( cb->findData( index.data( Qt::UserRole + 2 ).toInt() ) );
return cb;
@ -101,8 +102,8 @@ void QgsDb2SourceSelectDelegate::setModelData( QWidget *editor, QAbstractItemMod
{
const QgsWkbTypes::Type type = static_cast< QgsWkbTypes::Type >( cb->currentData().toInt() );
model->setData( index, QgsDb2TableModel::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsWkbTypes::displayString( type ) : tr( "Select…" ) );
model->setData( index, QgsLayerItem::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsWkbTypes::translatedDisplayString( type ) : tr( "Select…" ) );
model->setData( index, type, Qt::UserRole + 2 );
}
else if ( index.column() == QgsDb2TableModel::DbtmPkCol )

View File

@ -77,10 +77,10 @@ void QgsDb2TableModel::addTableEntry( const QgsDb2LayerProperty &layerProperty )
QStandardItem *schemaNameItem = new QStandardItem( layerProperty.schemaName );
schemaNameItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
QStandardItem *typeItem = new QStandardItem( iconForWkbType( wkbType ),
QStandardItem *typeItem = new QStandardItem( QgsLayerItem::iconForWkbType( wkbType ),
needToDetect
? tr( "Detecting…" )
: QgsWkbTypes::displayString( wkbType ) );
: QgsWkbTypes::translatedDisplayString( wkbType ) );
typeItem->setData( needToDetect, Qt::UserRole + 1 );
typeItem->setData( wkbType, Qt::UserRole + 2 );
@ -265,8 +265,8 @@ void QgsDb2TableModel::setGeometryTypesForTable( QgsDb2LayerProperty layerProper
// update existing row
QgsWkbTypes::Type wkbType = QgsDb2TableModel::wkbTypeFromDb2( typeList.at( 0 ) );
row[ DbtmType ]->setIcon( iconForWkbType( wkbType ) );
row[ DbtmType ]->setText( QgsWkbTypes::displayString( wkbType ) );
row[ DbtmType ]->setIcon( QgsLayerItem::iconForWkbType( wkbType ) );
row[ DbtmType ]->setText( QgsWkbTypes::translatedDisplayString( wkbType ) );
row[ DbtmType ]->setData( false, Qt::UserRole + 1 );
row[ DbtmType ]->setData( wkbType, Qt::UserRole + 2 );
@ -292,25 +292,6 @@ void QgsDb2TableModel::setGeometryTypesForTable( QgsDb2LayerProperty layerProper
}
}
QIcon QgsDb2TableModel::iconForWkbType( QgsWkbTypes::Type type )
{
switch ( QgsWkbTypes::geometryType( type ) )
{
case QgsWkbTypes::PointGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) );
case QgsWkbTypes::LineGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) );
case QgsWkbTypes::PolygonGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) );
case QgsWkbTypes::NullGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) );
case QgsWkbTypes::UnknownGeometry:
break;
}
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconLayer.png" ) );
}
bool QgsDb2TableModel::setData( const QModelIndex &idx, const QVariant &value, int role )
{
if ( !QStandardItemModel::setData( idx, value, role ) )

View File

@ -84,8 +84,6 @@ class QgsDb2TableModel : public QStandardItemModel
QString layerURI( const QModelIndex &index, const QString &connInfo, bool useEstimatedMetadata );
static QIcon iconForWkbType( QgsWkbTypes::Type type );
static QgsWkbTypes::Type wkbTypeFromDb2( QString dbType, int dim = 2 );
private:

View File

@ -25,6 +25,7 @@
#include "qgsmssqlnewconnection.h"
#include "qgsmanageconnectionsdialog.h"
#include "qgsquerybuilder.h"
#include "qgsdataitem.h"
#include "qgsdatasourceuri.h"
#include "qgsvectorlayer.h"
#include "qgssettings.h"
@ -65,7 +66,7 @@ QWidget *QgsMssqlSourceSelectDelegate::createEditor( QWidget *parent, const QSty
<< QgsWkbTypes::MultiPolygon
<< QgsWkbTypes::NoGeometry )
{
cb->addItem( QgsMssqlTableModel::iconForWkbType( type ), QgsWkbTypes::displayString( type ), type );
cb->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
}
cb->setCurrentIndex( cb->findData( index.data( Qt::UserRole + 2 ).toInt() ) );
return cb;
@ -104,8 +105,8 @@ void QgsMssqlSourceSelectDelegate::setModelData( QWidget *editor, QAbstractItemM
{
QgsWkbTypes::Type type = static_cast< QgsWkbTypes::Type >( cb->currentData().toInt() );
model->setData( index, QgsMssqlTableModel::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsWkbTypes::displayString( type ) : tr( "Select…" ) );
model->setData( index, QgsLayerItem::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsWkbTypes::translatedDisplayString( type ) : tr( "Select…" ) );
model->setData( index, type, Qt::UserRole + 2 );
}
else if ( index.column() == QgsMssqlTableModel::DbtmPkCol )

View File

@ -76,7 +76,7 @@ void QgsMssqlTableModel::addTableEntry( const QgsMssqlLayerProperty &layerProper
QStandardItem *schemaNameItem = new QStandardItem( layerProperty.schemaName );
schemaNameItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
QStandardItem *typeItem = new QStandardItem( iconForWkbType( wkbType ),
QStandardItem *typeItem = new QStandardItem( QgsLayerItem::iconForWkbType( wkbType ),
needToDetect
? tr( "Detecting…" )
: QgsWkbTypes::displayString( wkbType ) );
@ -266,8 +266,8 @@ void QgsMssqlTableModel::setGeometryTypesForTable( QgsMssqlLayerProperty layerPr
// update existing row
QgsWkbTypes::Type wkbType = QgsMssqlTableModel::wkbTypeFromMssql( typeList.at( 0 ) );
row[ DbtmType ]->setIcon( iconForWkbType( wkbType ) );
row[ DbtmType ]->setText( QgsWkbTypes::displayString( wkbType ) );
row[ DbtmType ]->setIcon( QgsLayerItem::iconForWkbType( wkbType ) );
row[ DbtmType ]->setText( QgsWkbTypes::translatedDisplayString( wkbType ) );
row[ DbtmType ]->setData( false, Qt::UserRole + 1 );
row[ DbtmType ]->setData( wkbType, Qt::UserRole + 2 );
@ -293,24 +293,6 @@ void QgsMssqlTableModel::setGeometryTypesForTable( QgsMssqlLayerProperty layerPr
}
}
QIcon QgsMssqlTableModel::iconForWkbType( QgsWkbTypes::Type type )
{
switch ( QgsWkbTypes::geometryType( type ) )
{
case QgsWkbTypes::PointGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) );
case QgsWkbTypes::LineGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconLineLayer.svg" ) );
case QgsWkbTypes::PolygonGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconPolygonLayer.svg" ) );
case QgsWkbTypes::NullGeometry:
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconTableLayer.svg" ) );
case QgsWkbTypes::UnknownGeometry:
break;
}
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconLayer.png" ) );
}
bool QgsMssqlTableModel::setData( const QModelIndex &idx, const QVariant &value, int role )
{
if ( !QStandardItemModel::setData( idx, value, role ) )

View File

@ -82,8 +82,6 @@ class QgsMssqlTableModel : public QStandardItemModel
QString layerURI( const QModelIndex &index, const QString &connInfo, bool useEstimatedMetadata, bool disableInvalidGeometryHandling );
static QIcon iconForWkbType( QgsWkbTypes::Type type );
static QgsWkbTypes::Type wkbTypeFromMssql( QString dbType );
private:

View File

@ -742,48 +742,6 @@ QgsWkbTypes::Type QgsOracleConn::wkbTypeFromDatabase( int gtype )
}
}
QString QgsOracleConn::displayStringForWkbType( QgsWkbTypes::Type type )
{
switch ( type )
{
case QgsWkbTypes::Point:
case QgsWkbTypes::Point25D:
return tr( "Point" );
case QgsWkbTypes::MultiPoint:
case QgsWkbTypes::MultiPoint25D:
return tr( "Multipoint" );
case QgsWkbTypes::LineString:
case QgsWkbTypes::LineString25D:
return tr( "Line" );
case QgsWkbTypes::MultiLineString:
case QgsWkbTypes::MultiLineString25D:
return tr( "Multiline" );
case QgsWkbTypes::Polygon:
case QgsWkbTypes::Polygon25D:
return tr( "Polygon" );
case QgsWkbTypes::MultiPolygon:
case QgsWkbTypes::MultiPolygon25D:
return tr( "Multipolygon" );
case QgsWkbTypes::NoGeometry:
return tr( "No Geometry" );
case QgsWkbTypes::Unknown:
return tr( "Unknown Geometry" );
default:
break;
}
Q_ASSERT( !"unexpected wkbType" );
return QString();
}
QgsWkbTypes::Type QgsOracleConn::wkbTypeFromGeomType( QgsWkbTypes::GeometryType geomType )
{
switch ( geomType )

View File

@ -186,7 +186,6 @@ class QgsOracleConn : public QObject
static const int sGeomTypeSelectLimit;
static QString displayStringForWkbType( QgsWkbTypes::Type wkbType );
static QgsWkbTypes::Type wkbTypeFromDatabase( int gtype );
static QString databaseTypeFilter( const QString &alias, QString geomCol, QgsWkbTypes::Type wkbType );

View File

@ -494,7 +494,7 @@ void QgsOracleOwnerItem::addLayer( const QgsOracleLayerProperty &layerProperty )
Q_ASSERT( layerProperty.size() == 1 );
QgsWkbTypes::Type wkbType = layerProperty.types.at( 0 );
QString tip = tr( "%1 as %2 in %3" ).arg( layerProperty.geometryColName, QgsOracleConn::displayStringForWkbType( wkbType ) ).arg( layerProperty.srids.at( 0 ) );
QString tip = tr( "%1 as %2 in %3" ).arg( layerProperty.geometryColName, QgsWkbTypes::translatedDisplayString( wkbType ) ).arg( layerProperty.srids.at( 0 ) );
QgsLayerItem::LayerType layerType;
switch ( wkbType )

View File

@ -25,6 +25,7 @@ email : jef at norbit dot de
#include "qgsoracletablecache.h"
#include "qgsmanageconnectionsdialog.h"
#include "qgsquerybuilder.h"
#include "qgsdataitem.h"
#include "qgsdatasourceuri.h"
#include "qgsvectorlayer.h"
#include "qgsoraclecolumntypethread.h"
@ -66,7 +67,7 @@ QWidget *QgsOracleSourceSelectDelegate::createEditor( QWidget *parent, const QSt
<< QgsWkbTypes::MultiPolygon
<< QgsWkbTypes::NoGeometry )
{
cb->addItem( QgsOracleTableModel::iconForWkbType( type ), QgsOracleConn::displayStringForWkbType( type ), type );
cb->addItem( QgsLayerItem::iconForWkbType( type ), QgsWkbTypes::translatedDisplayString( type ), type );
}
return cb;
}
@ -141,8 +142,8 @@ void QgsOracleSourceSelectDelegate::setModelData( QWidget *editor, QAbstractItem
{
QgsWkbTypes::Type type = static_cast< QgsWkbTypes::Type >( cb->currentData().toInt() );
model->setData( index, QgsOracleTableModel::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsOracleConn::displayStringForWkbType( type ) : tr( "Select…" ) );
model->setData( index, QgsLayerItem::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsWkbTypes::translatedDisplayString( type ) : tr( "Select…" ) );
model->setData( index, type, Qt::UserRole + 2 );
}
else if ( index.column() == QgsOracleTableModel::DbtmPkCol )

View File

@ -69,7 +69,9 @@ void QgsOracleTableModel::addTableEntry( const QgsOracleLayerProperty &layerProp
}
QStandardItem *ownerNameItem = new QStandardItem( layerProperty.ownerName );
QStandardItem *typeItem = new QStandardItem( iconForWkbType( wkbType ), wkbType == QgsWkbTypes::Unknown ? tr( "Select…" ) : QgsOracleConn::displayStringForWkbType( wkbType ) );
QStandardItem *typeItem = new QStandardItem(
QgsLayerItem::iconForWkbType( wkbType ),
wkbType == QgsWkbTypes::Unknown ? tr( "Select…" ) : QgsWkbTypes::translatedDisplayString( wkbType ) );
typeItem->setData( wkbType == QgsWkbTypes::Unknown, Qt::UserRole + 1 );
typeItem->setData( wkbType, Qt::UserRole + 2 );
if ( wkbType == QgsWkbTypes::Unknown )
@ -220,29 +222,6 @@ void QgsOracleTableModel::setSql( const QModelIndex &index, const QString &sql )
}
}
QIcon QgsOracleTableModel::iconForWkbType( QgsWkbTypes::Type type )
{
switch ( QgsWkbTypes::geometryType( type ) )
{
case QgsWkbTypes::PointGeometry:
return QgsApplication::getThemeIcon( "/mIconPointLayer.svg" );
case QgsWkbTypes::LineGeometry:
return QgsApplication::getThemeIcon( "/mIconLineLayer.svg" );
case QgsWkbTypes::PolygonGeometry:
return QgsApplication::getThemeIcon( "/mIconPolygonLayer.svg" );
case QgsWkbTypes::UnknownGeometry:
return QgsApplication::getThemeIcon( "/mIconLayer.png" );
case QgsWkbTypes::NullGeometry:
return QgsApplication::getThemeIcon( "/mIconTableLayer.svg" );
}
return QgsApplication::getThemeIcon( "/mIconTableLayer.png" );
}
bool QgsOracleTableModel::setData( const QModelIndex &idx, const QVariant &value, int role )
{
if ( !QStandardItemModel::setData( idx, value, role ) )

View File

@ -59,8 +59,6 @@ class QgsOracleTableModel : public QStandardItemModel
QString layerURI( const QModelIndex &index, const QgsDataSourceUri &connInfo );
static QIcon iconForWkbType( QgsWkbTypes::Type type );
private:
//! Number of tables in the model
int mTableCount = 0;

View File

@ -18,6 +18,7 @@ email : sherman at mrcc.com
#include "qgspgsourceselect.h"
#include "qgsdataitem.h"
#include "qgslogger.h"
#include "qgsapplication.h"
#include "qgspostgresprovider.h"
@ -67,7 +68,7 @@ QWidget *QgsPgSourceSelectDelegate::createEditor( QWidget *parent, const QStyleO
, QgsWkbTypes::NoGeometry };
for ( QgsWkbTypes::Type type : types )
{
cb->addItem( QgsPgTableModel::iconForWkbType( type ), QgsPostgresConn::displayStringForWkbType( type ), type );
cb->addItem( QgsLayerItem::iconForWkbType( type ), QgsPostgresConn::displayStringForWkbType( type ), type );
}
return cb;
}
@ -162,7 +163,7 @@ void QgsPgSourceSelectDelegate::setModelData( QWidget *editor, QAbstractItemMode
{
QgsWkbTypes::Type type = static_cast< QgsWkbTypes::Type >( cb->currentData().toInt() );
model->setData( index, QgsPgTableModel::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, QgsLayerItem::iconForWkbType( type ), Qt::DecorationRole );
model->setData( index, type != QgsWkbTypes::Unknown ? QgsPostgresConn::displayStringForWkbType( type ) : tr( "Select…" ) );
model->setData( index, type, Qt::UserRole + 2 );
}

View File

@ -87,7 +87,7 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty &layerProper
}
else
{
typeItem = new QStandardItem( iconForWkbType( wkbType ), wkbType == QgsWkbTypes::Unknown ? tr( "Select…" ) : QgsPostgresConn::displayStringForWkbType( wkbType ) );
typeItem = new QStandardItem( QgsLayerItem::iconForWkbType( wkbType ), wkbType == QgsWkbTypes::Unknown ? tr( "Select…" ) : QgsPostgresConn::displayStringForWkbType( wkbType ) );
}
typeItem->setData( wkbType == QgsWkbTypes::Unknown, Qt::UserRole + 1 );
typeItem->setData( wkbType, Qt::UserRole + 2 );
@ -310,23 +310,6 @@ void QgsPgTableModel::setSql( const QModelIndex &index, const QString &sql )
}
}
QIcon QgsPgTableModel::iconForWkbType( QgsWkbTypes::Type type )
{
QgsWkbTypes::GeometryType geomType = QgsWkbTypes::geometryType( QgsWkbTypes::Type( type ) );
switch ( geomType )
{
case QgsWkbTypes::PointGeometry:
return QgsApplication::getThemeIcon( "/mIconPointLayer.svg" );
case QgsWkbTypes::LineGeometry:
return QgsApplication::getThemeIcon( "/mIconLineLayer.svg" );
case QgsWkbTypes::PolygonGeometry:
return QgsApplication::getThemeIcon( "/mIconPolygonLayer.svg" );
default:
break;
}
return QgsApplication::getThemeIcon( "/mIconLayer.png" );
}
bool QgsPgTableModel::setData( const QModelIndex &idx, const QVariant &value, int role )
{
if ( !QStandardItemModel::setData( idx, value, role ) )

View File

@ -62,8 +62,6 @@ class QgsPgTableModel : public QStandardItemModel
QString layerURI( const QModelIndex &index, const QString &connInfo, bool useEstimatedMetadata );
static QIcon iconForWkbType( QgsWkbTypes::Type type );
void setConnectionName( const QString &connName ) { mConnName = connName; }
private: