mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-16 00:05:45 -04:00
Remove a bunch of duplicate code and simplify interface for QgsStyle/QgsStyleModel
This commit is contained in:
parent
6c2937fd86
commit
0e8be09fd0
@ -353,6 +353,15 @@ Removes all tags for the specified symbol or colorramp
|
||||
bool removeSymbol( const QString &name );
|
||||
%Docstring
|
||||
Removes symbol from style (and delete it)
|
||||
%End
|
||||
|
||||
bool renameEntity( StyleEntity type, const QString &oldName, const QString &newName );
|
||||
%Docstring
|
||||
Renames an entity of the specified ``type`` from ``oldName`` to ``newName``.
|
||||
|
||||
Returns ``True`` if the entity was successfully renamed.
|
||||
|
||||
.. versionadded:: 3.14
|
||||
%End
|
||||
|
||||
bool renameSymbol( const QString &oldName, const QString &newName );
|
||||
|
@ -110,15 +110,9 @@ void QgsStyle::clear()
|
||||
mSymbols.clear();
|
||||
mColorRamps.clear();
|
||||
mTextFormats.clear();
|
||||
mCachedColorRampTags.clear();
|
||||
mCachedSymbolTags.clear();
|
||||
mCachedTextFormatTags.clear();
|
||||
mCachedLabelSettingsTags.clear();
|
||||
|
||||
mCachedSymbolFavorites.clear();
|
||||
mCachedColorRampFavorites.clear();
|
||||
mCachedTextFormatFavorites.clear();
|
||||
mCachedLabelSettingsFavorites.clear();
|
||||
mCachedTags.clear();
|
||||
mCachedFavorites.clear();
|
||||
}
|
||||
|
||||
bool QgsStyle::addSymbol( const QString &name, QgsSymbol *symbol, bool update )
|
||||
@ -169,7 +163,7 @@ bool QgsStyle::saveSymbol( const QString &name, QgsSymbol *symbol, bool favorite
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedSymbolFavorites[ name ] = favorite;
|
||||
mCachedFavorites[ SymbolEntity ].insert( name, favorite );
|
||||
|
||||
tagSymbol( SymbolEntity, name, tags );
|
||||
|
||||
@ -204,13 +198,36 @@ bool QgsStyle::removeSymbol( const QString &name )
|
||||
const bool result = remove( SymbolEntity, symbolid );
|
||||
if ( result )
|
||||
{
|
||||
mCachedSymbolTags.remove( name );
|
||||
mCachedSymbolFavorites.remove( name );
|
||||
mCachedTags[ SymbolEntity ].remove( name );
|
||||
mCachedFavorites[ SymbolEntity ].remove( name );
|
||||
emit symbolRemoved( name );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool QgsStyle::renameEntity( QgsStyle::StyleEntity type, const QString &oldName, const QString &newName )
|
||||
{
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
return renameSymbol( oldName, newName );
|
||||
|
||||
case ColorrampEntity:
|
||||
return renameColorRamp( oldName, newName );
|
||||
|
||||
case TextFormatEntity:
|
||||
return renameTextFormat( oldName, newName );
|
||||
|
||||
case LabelSettingsEntity:
|
||||
return renameLabelSettings( oldName, newName );
|
||||
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QgsSymbol *QgsStyle::symbol( const QString &name )
|
||||
{
|
||||
const QgsSymbol *symbol = symbolRef( name );
|
||||
@ -323,7 +340,7 @@ bool QgsStyle::saveColorRamp( const QString &name, QgsColorRamp *ramp, bool favo
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedColorRampFavorites[ name ] = favorite;
|
||||
mCachedFavorites[ ColorrampEntity ].insert( name, favorite );
|
||||
|
||||
tagSymbol( ColorrampEntity, name, tags );
|
||||
|
||||
@ -345,8 +362,8 @@ bool QgsStyle::removeColorRamp( const QString &name )
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedColorRampTags.remove( name );
|
||||
mCachedColorRampFavorites.remove( name );
|
||||
mCachedTags[ ColorrampEntity ].remove( name );
|
||||
mCachedFavorites[ ColorrampEntity ].remove( name );
|
||||
|
||||
emit rampRemoved( name );
|
||||
|
||||
@ -667,8 +684,8 @@ bool QgsStyle::renameSymbol( const QString &oldName, const QString &newName )
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedSymbolTags.remove( oldName );
|
||||
mCachedSymbolFavorites.remove( oldName );
|
||||
mCachedTags[ SymbolEntity ].remove( oldName );
|
||||
mCachedFavorites[ SymbolEntity ].remove( oldName );
|
||||
|
||||
const bool result = rename( SymbolEntity, symbolid, newName );
|
||||
if ( result )
|
||||
@ -690,8 +707,8 @@ bool QgsStyle::renameColorRamp( const QString &oldName, const QString &newName )
|
||||
return false;
|
||||
|
||||
mColorRamps.insert( newName, ramp );
|
||||
mCachedColorRampTags.remove( oldName );
|
||||
mCachedColorRampFavorites.remove( oldName );
|
||||
mCachedTags[ ColorrampEntity ].remove( oldName );
|
||||
mCachedFavorites[ ColorrampEntity ].remove( oldName );
|
||||
|
||||
int rampid = 0;
|
||||
sqlite3_statement_unique_ptr statement;
|
||||
@ -733,7 +750,7 @@ bool QgsStyle::saveTextFormat( const QString &name, const QgsTextFormat &format,
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedTextFormatFavorites[ name ] = favorite;
|
||||
mCachedFavorites[ TextFormatEntity ].insert( name, favorite );
|
||||
|
||||
tagSymbol( TextFormatEntity, name, tags );
|
||||
|
||||
@ -756,8 +773,8 @@ bool QgsStyle::removeTextFormat( const QString &name )
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedTextFormatTags.remove( name );
|
||||
mCachedTextFormatFavorites.remove( name );
|
||||
mCachedTags[ TextFormatEntity ].remove( name );
|
||||
mCachedFavorites[ TextFormatEntity ].remove( name );
|
||||
|
||||
emit textFormatRemoved( name );
|
||||
|
||||
@ -778,8 +795,8 @@ bool QgsStyle::renameTextFormat( const QString &oldName, const QString &newName
|
||||
QgsTextFormat format = mTextFormats.take( oldName );
|
||||
|
||||
mTextFormats.insert( newName, format );
|
||||
mCachedTextFormatTags.remove( oldName );
|
||||
mCachedTextFormatFavorites.remove( oldName );
|
||||
mCachedTags[ TextFormatEntity ].remove( oldName );
|
||||
mCachedFavorites[ TextFormatEntity ].remove( oldName );
|
||||
|
||||
int textFormatId = 0;
|
||||
sqlite3_statement_unique_ptr statement;
|
||||
@ -821,7 +838,7 @@ bool QgsStyle::saveLabelSettings( const QString &name, const QgsPalLayerSettings
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedLabelSettingsFavorites[ name ] = favorite;
|
||||
mCachedFavorites[ LabelSettingsEntity ].insert( name, favorite );
|
||||
|
||||
tagSymbol( LabelSettingsEntity, name, tags );
|
||||
|
||||
@ -844,8 +861,8 @@ bool QgsStyle::removeLabelSettings( const QString &name )
|
||||
return false;
|
||||
}
|
||||
|
||||
mCachedLabelSettingsTags.remove( name );
|
||||
mCachedLabelSettingsFavorites.remove( name );
|
||||
mCachedTags[ LabelSettingsEntity ].remove( name );
|
||||
mCachedFavorites[ LabelSettingsEntity ].remove( name );
|
||||
|
||||
emit labelSettingsRemoved( name );
|
||||
|
||||
@ -865,8 +882,8 @@ bool QgsStyle::renameLabelSettings( const QString &oldName, const QString &newNa
|
||||
QgsPalLayerSettings settings = mLabelSettings.take( oldName );
|
||||
|
||||
mLabelSettings.insert( newName, settings );
|
||||
mCachedLabelSettingsTags.remove( oldName );
|
||||
mCachedLabelSettingsFavorites.remove( oldName );
|
||||
mCachedTags[ LabelSettingsEntity ].remove( oldName );
|
||||
mCachedFavorites[ LabelSettingsEntity ].remove( oldName );
|
||||
|
||||
int labelSettingsId = 0;
|
||||
sqlite3_statement_unique_ptr statement;
|
||||
@ -1080,14 +1097,8 @@ bool QgsStyle::rename( StyleEntity type, int id, const QString &newName )
|
||||
}
|
||||
else
|
||||
{
|
||||
mCachedColorRampTags.clear();
|
||||
mCachedSymbolTags.clear();
|
||||
mCachedTextFormatTags.clear();
|
||||
mCachedLabelSettingsTags.clear();
|
||||
mCachedSymbolFavorites.clear();
|
||||
mCachedColorRampFavorites.clear();
|
||||
mCachedTextFormatFavorites.clear();
|
||||
mCachedLabelSettingsFavorites.clear();
|
||||
mCachedTags.clear();
|
||||
mCachedFavorites.clear();
|
||||
|
||||
switch ( type )
|
||||
{
|
||||
@ -1148,14 +1159,8 @@ bool QgsStyle::remove( StyleEntity type, int id )
|
||||
}
|
||||
else
|
||||
{
|
||||
mCachedColorRampTags.clear();
|
||||
mCachedSymbolTags.clear();
|
||||
mCachedTextFormatTags.clear();
|
||||
mCachedLabelSettingsTags.clear();
|
||||
mCachedSymbolFavorites.clear();
|
||||
mCachedColorRampFavorites.clear();
|
||||
mCachedTextFormatFavorites.clear();
|
||||
mCachedLabelSettingsFavorites.clear();
|
||||
mCachedTags.clear();
|
||||
mCachedFavorites.clear();
|
||||
|
||||
if ( groupRemoved )
|
||||
{
|
||||
@ -1216,21 +1221,13 @@ bool QgsStyle::addFavorite( StyleEntity type, const QString &name )
|
||||
{
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
mCachedSymbolFavorites[ name ] = true;
|
||||
break;
|
||||
case ColorrampEntity:
|
||||
mCachedColorRampFavorites[ name ] = true;
|
||||
break;
|
||||
case TextFormatEntity:
|
||||
mCachedTextFormatFavorites[ name ] = true;
|
||||
break;
|
||||
case LabelSettingsEntity:
|
||||
mCachedLabelSettingsFavorites[ name ] = true;
|
||||
break;
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
break;
|
||||
|
||||
default:
|
||||
mCachedFavorites[ type ].insert( name, true );
|
||||
break;
|
||||
}
|
||||
emit favoritedChanged( type, name, true );
|
||||
}
|
||||
@ -1268,21 +1265,13 @@ bool QgsStyle::removeFavorite( StyleEntity type, const QString &name )
|
||||
{
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
mCachedSymbolFavorites[ name ] = false;
|
||||
break;
|
||||
case ColorrampEntity:
|
||||
mCachedColorRampFavorites[ name ] = false;
|
||||
break;
|
||||
case TextFormatEntity:
|
||||
mCachedTextFormatFavorites[ name ] = false;
|
||||
break;
|
||||
case LabelSettingsEntity:
|
||||
mCachedLabelSettingsFavorites[ name ] = false;
|
||||
break;
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
break;
|
||||
|
||||
default:
|
||||
mCachedFavorites[ type ].insert( name, false );
|
||||
break;
|
||||
}
|
||||
emit favoritedChanged( type, name, false );
|
||||
}
|
||||
@ -1675,28 +1664,13 @@ QStringList QgsStyle::tagsOfSymbol( StyleEntity type, const QString &symbol )
|
||||
{
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
if ( mCachedSymbolTags.contains( symbol ) )
|
||||
return mCachedSymbolTags.value( symbol );
|
||||
break;
|
||||
|
||||
case ColorrampEntity:
|
||||
if ( mCachedColorRampTags.contains( symbol ) )
|
||||
return mCachedColorRampTags.value( symbol );
|
||||
break;
|
||||
|
||||
case TextFormatEntity:
|
||||
if ( mCachedTextFormatTags.contains( symbol ) )
|
||||
return mCachedTextFormatTags.value( symbol );
|
||||
break;
|
||||
|
||||
case LabelSettingsEntity:
|
||||
if ( mCachedLabelSettingsTags.contains( symbol ) )
|
||||
return mCachedLabelSettingsTags.value( symbol );
|
||||
break;
|
||||
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
return QStringList();
|
||||
|
||||
default:
|
||||
if ( mCachedTags[ type ].contains( symbol ) )
|
||||
return mCachedTags[ type ].value( symbol );
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1779,25 +1753,13 @@ QStringList QgsStyle::tagsOfSymbol( StyleEntity type, const QString &symbol )
|
||||
// update cache
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
mCachedSymbolTags[ symbol ] = tagList;
|
||||
break;
|
||||
|
||||
case ColorrampEntity:
|
||||
mCachedColorRampTags[ symbol ] = tagList;
|
||||
break;
|
||||
|
||||
case TextFormatEntity:
|
||||
mCachedTextFormatTags[ symbol ] = tagList;
|
||||
break;
|
||||
|
||||
case LabelSettingsEntity:
|
||||
mCachedLabelSettingsTags[ symbol ] = tagList;
|
||||
break;
|
||||
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
break;
|
||||
|
||||
default:
|
||||
mCachedTags[ type ].insert( symbol, tagList );
|
||||
break;
|
||||
}
|
||||
|
||||
return tagList;
|
||||
@ -1813,29 +1775,14 @@ bool QgsStyle::isFavorite( QgsStyle::StyleEntity type, const QString &name )
|
||||
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
if ( mCachedSymbolFavorites.contains( name ) )
|
||||
return mCachedSymbolFavorites.value( name );
|
||||
break;
|
||||
|
||||
case ColorrampEntity:
|
||||
if ( mCachedColorRampFavorites.contains( name ) )
|
||||
return mCachedColorRampFavorites.value( name );
|
||||
break;
|
||||
|
||||
case TextFormatEntity:
|
||||
if ( mCachedTextFormatFavorites.contains( name ) )
|
||||
return mCachedTextFormatFavorites.value( name );
|
||||
break;
|
||||
|
||||
case LabelSettingsEntity:
|
||||
if ( mCachedLabelSettingsFavorites.contains( name ) )
|
||||
return mCachedLabelSettingsFavorites.value( name );
|
||||
break;
|
||||
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
return false;
|
||||
|
||||
default:
|
||||
if ( mCachedFavorites[ type ].contains( name ) )
|
||||
return mCachedFavorites[ type ].value( name );
|
||||
break;
|
||||
}
|
||||
|
||||
const QStringList names = allNames( type );
|
||||
@ -1851,28 +1798,7 @@ bool QgsStyle::isFavorite( QgsStyle::StyleEntity type, const QString &name )
|
||||
if ( n == name )
|
||||
res = isFav;
|
||||
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
mCachedSymbolFavorites[n] = isFav;
|
||||
break;
|
||||
|
||||
case ColorrampEntity:
|
||||
mCachedColorRampFavorites[ n ] = isFav;
|
||||
break;
|
||||
|
||||
case TextFormatEntity:
|
||||
mCachedTextFormatFavorites[ n ] = isFav;
|
||||
break;
|
||||
|
||||
case LabelSettingsEntity:
|
||||
mCachedLabelSettingsFavorites[ n ] = isFav;
|
||||
break;
|
||||
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
return false;
|
||||
}
|
||||
mCachedFavorites[ type ].insert( n, isFav );
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@ -2858,28 +2784,7 @@ bool QgsStyle::updateSymbol( StyleEntity type, const QString &name )
|
||||
|
||||
void QgsStyle::clearCachedTags( QgsStyle::StyleEntity type, const QString &name )
|
||||
{
|
||||
switch ( type )
|
||||
{
|
||||
case SymbolEntity:
|
||||
mCachedSymbolTags.remove( name );
|
||||
break;
|
||||
|
||||
case ColorrampEntity:
|
||||
mCachedColorRampTags.remove( name );
|
||||
break;
|
||||
|
||||
case TextFormatEntity:
|
||||
mCachedTextFormatTags.remove( name );
|
||||
break;
|
||||
|
||||
case LabelSettingsEntity:
|
||||
mCachedLabelSettingsTags.remove( name );
|
||||
break;
|
||||
|
||||
case TagEntity:
|
||||
case SmartgroupEntity:
|
||||
break;
|
||||
}
|
||||
mCachedTags[ type ].remove( name );
|
||||
}
|
||||
|
||||
QgsStyle::StyleEntity QgsStyleSymbolEntity::type() const
|
||||
|
@ -412,6 +412,15 @@ class CORE_EXPORT QgsStyle : public QObject
|
||||
//! Removes symbol from style (and delete it)
|
||||
bool removeSymbol( const QString &name );
|
||||
|
||||
/**
|
||||
* Renames an entity of the specified \a type from \a oldName to \a newName.
|
||||
*
|
||||
* Returns TRUE if the entity was successfully renamed.
|
||||
*
|
||||
* \since QGIS 3.14
|
||||
*/
|
||||
bool renameEntity( StyleEntity type, const QString &oldName, const QString &newName );
|
||||
|
||||
/**
|
||||
* Renames a symbol from \a oldName to \a newName.
|
||||
*
|
||||
@ -865,15 +874,8 @@ class CORE_EXPORT QgsStyle : public QObject
|
||||
QgsTextFormatMap mTextFormats;
|
||||
QgsLabelSettingsMap mLabelSettings;
|
||||
|
||||
QHash< QString, QStringList > mCachedSymbolTags;
|
||||
QHash< QString, QStringList > mCachedColorRampTags;
|
||||
QHash< QString, QStringList > mCachedTextFormatTags;
|
||||
QHash< QString, QStringList > mCachedLabelSettingsTags;
|
||||
|
||||
QHash< QString, bool > mCachedSymbolFavorites;
|
||||
QHash< QString, bool > mCachedColorRampFavorites;
|
||||
QHash< QString, bool > mCachedTextFormatFavorites;
|
||||
QHash< QString, bool > mCachedLabelSettingsFavorites;
|
||||
QHash< QgsStyle::StyleEntity, QHash< QString, QStringList > > mCachedTags;
|
||||
QHash< QgsStyle::StyleEntity, QHash< QString, bool > > mCachedFavorites;
|
||||
|
||||
QString mErrorString;
|
||||
QString mFileName;
|
||||
|
@ -25,35 +25,38 @@
|
||||
|
||||
const double ICON_PADDING_FACTOR = 0.16;
|
||||
|
||||
const auto ENTITIES = { QgsStyle::SymbolEntity, QgsStyle::ColorrampEntity, QgsStyle::TextFormatEntity, QgsStyle::LabelSettingsEntity };
|
||||
|
||||
QgsStyleModel::QgsStyleModel( QgsStyle *style, QObject *parent )
|
||||
: QAbstractItemModel( parent )
|
||||
, mStyle( style )
|
||||
{
|
||||
Q_ASSERT( mStyle );
|
||||
mSymbolNames = mStyle->symbolNames();
|
||||
mRampNames = mStyle->colorRampNames();
|
||||
mTextFormatNames = mStyle->textFormatNames();
|
||||
mLabelSettingsNames = mStyle->labelSettingsNames();
|
||||
|
||||
connect( mStyle, &QgsStyle::symbolSaved, this, &QgsStyleModel::onSymbolAdded );
|
||||
connect( mStyle, &QgsStyle::symbolRemoved, this, &QgsStyleModel::onSymbolRemoved );
|
||||
connect( mStyle, &QgsStyle::symbolRenamed, this, &QgsStyleModel::onSymbolRename );
|
||||
connect( mStyle, &QgsStyle::symbolChanged, this, &QgsStyleModel::onSymbolChanged );
|
||||
for ( QgsStyle::StyleEntity entity : ENTITIES )
|
||||
{
|
||||
mEntityNames.insert( entity, mStyle->allNames( entity ) );
|
||||
}
|
||||
|
||||
connect( mStyle, &QgsStyle::rampAdded, this, &QgsStyleModel::onRampAdded );
|
||||
connect( mStyle, &QgsStyle::rampChanged, this, &QgsStyleModel::onRampChanged );
|
||||
connect( mStyle, &QgsStyle::rampRemoved, this, &QgsStyleModel::onRampRemoved );
|
||||
connect( mStyle, &QgsStyle::rampRenamed, this, &QgsStyleModel::onRampRename );
|
||||
connect( mStyle, &QgsStyle::symbolSaved, this, [ = ]( const QString & name ) { onEntityAdded( QgsStyle::SymbolEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::symbolRemoved, this, [ = ]( const QString & name ) { onEntityRemoved( QgsStyle::SymbolEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::symbolRenamed, this, [ = ]( const QString & oldName, const QString & newName ) { onEntityRename( QgsStyle::SymbolEntity, oldName, newName ); } );
|
||||
connect( mStyle, &QgsStyle::symbolChanged, this, [ = ]( const QString & name ) { onEntityChanged( QgsStyle::SymbolEntity, name ); } );
|
||||
|
||||
connect( mStyle, &QgsStyle::textFormatAdded, this, &QgsStyleModel::onTextFormatAdded );
|
||||
connect( mStyle, &QgsStyle::textFormatChanged, this, &QgsStyleModel::onTextFormatChanged );
|
||||
connect( mStyle, &QgsStyle::textFormatRemoved, this, &QgsStyleModel::onTextFormatRemoved );
|
||||
connect( mStyle, &QgsStyle::textFormatRenamed, this, &QgsStyleModel::onTextFormatRename );
|
||||
connect( mStyle, &QgsStyle::rampAdded, this, [ = ]( const QString & name ) { onEntityAdded( QgsStyle::ColorrampEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::rampChanged, this, [ = ]( const QString & name ) { onEntityChanged( QgsStyle::ColorrampEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::rampRemoved, this, [ = ]( const QString & name ) { onEntityRemoved( QgsStyle::ColorrampEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::rampRenamed, this, [ = ]( const QString & oldName, const QString & newName ) { onEntityRename( QgsStyle::ColorrampEntity, oldName, newName ); } );
|
||||
|
||||
connect( mStyle, &QgsStyle::labelSettingsAdded, this, &QgsStyleModel::onLabelSettingsAdded );
|
||||
connect( mStyle, &QgsStyle::labelSettingsChanged, this, &QgsStyleModel::onLabelSettingsChanged );
|
||||
connect( mStyle, &QgsStyle::labelSettingsRemoved, this, &QgsStyleModel::onLabelSettingsRemoved );
|
||||
connect( mStyle, &QgsStyle::labelSettingsRenamed, this, &QgsStyleModel::onLabelSettingsRename );
|
||||
connect( mStyle, &QgsStyle::textFormatAdded, this, [ = ]( const QString & name ) { onEntityAdded( QgsStyle::TextFormatEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::textFormatChanged, this, [ = ]( const QString & name ) { onEntityChanged( QgsStyle::TextFormatEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::textFormatRemoved, this, [ = ]( const QString & name ) { onEntityRemoved( QgsStyle::TextFormatEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::textFormatRenamed, this, [ = ]( const QString & oldName, const QString & newName ) { onEntityRename( QgsStyle::TextFormatEntity, oldName, newName ); } );
|
||||
|
||||
connect( mStyle, &QgsStyle::labelSettingsAdded, this, [ = ]( const QString & name ) { onEntityAdded( QgsStyle::LabelSettingsEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::labelSettingsChanged, this, [ = ]( const QString & name ) { onEntityChanged( QgsStyle::LabelSettingsEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::labelSettingsRemoved, this, [ = ]( const QString & name ) { onEntityRemoved( QgsStyle::LabelSettingsEntity, name ); } );
|
||||
connect( mStyle, &QgsStyle::labelSettingsRenamed, this, [ = ]( const QString & oldName, const QString & newName ) { onEntityRename( QgsStyle::LabelSettingsEntity, oldName, newName ); } );
|
||||
|
||||
connect( mStyle, &QgsStyle::entityTagsChanged, this, &QgsStyleModel::onTagsChanged );
|
||||
|
||||
@ -81,25 +84,13 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
QString name;
|
||||
switch ( entityType )
|
||||
{
|
||||
case QgsStyle::SymbolEntity:
|
||||
name = mSymbolNames.value( index.row() );
|
||||
break;
|
||||
|
||||
case QgsStyle::ColorrampEntity:
|
||||
name = mRampNames.value( index.row() - mSymbolNames.size() );
|
||||
break;
|
||||
|
||||
case QgsStyle::TextFormatEntity:
|
||||
name = mTextFormatNames.value( index.row() - mSymbolNames.size() - mRampNames.size() );
|
||||
break;
|
||||
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
name = mLabelSettingsNames.value( index.row() - mSymbolNames.size() - mRampNames.size() - mTextFormatNames.size() );
|
||||
break;
|
||||
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
break;
|
||||
|
||||
default:
|
||||
name = mEntityNames[ entityType ].value( index.row() - offsetForEntity( entityType ) );
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( role )
|
||||
@ -217,7 +208,7 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
case QgsStyle::SymbolEntity:
|
||||
{
|
||||
// use cached icon if possible
|
||||
QIcon icon = mSymbolIconCache.value( name );
|
||||
QIcon icon = mIconCache[ entityType ].value( name );
|
||||
if ( !icon.isNull() )
|
||||
return icon;
|
||||
|
||||
@ -233,13 +224,13 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
}
|
||||
|
||||
}
|
||||
mSymbolIconCache.insert( name, icon );
|
||||
mIconCache[ entityType ].insert( name, icon );
|
||||
return icon;
|
||||
}
|
||||
case QgsStyle::ColorrampEntity:
|
||||
{
|
||||
// use cached icon if possible
|
||||
QIcon icon = mColorRampIconCache.value( name );
|
||||
QIcon icon = mIconCache[ entityType ].value( name );
|
||||
if ( !icon.isNull() )
|
||||
return icon;
|
||||
|
||||
@ -254,14 +245,14 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
}
|
||||
|
||||
}
|
||||
mColorRampIconCache.insert( name, icon );
|
||||
mIconCache[ entityType ].insert( name, icon );
|
||||
return icon;
|
||||
}
|
||||
|
||||
case QgsStyle::TextFormatEntity:
|
||||
{
|
||||
// use cached icon if possible
|
||||
QIcon icon = mTextFormatIconCache.value( name );
|
||||
QIcon icon = mIconCache[ entityType ].value( name );
|
||||
if ( !icon.isNull() )
|
||||
return icon;
|
||||
|
||||
@ -272,14 +263,14 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
{
|
||||
icon.addPixmap( QgsTextFormat::textFormatPreviewPixmap( format, s, QString(), static_cast< int >( s.width() * ICON_PADDING_FACTOR ) ) );
|
||||
}
|
||||
mTextFormatIconCache.insert( name, icon );
|
||||
mIconCache[ entityType ].insert( name, icon );
|
||||
return icon;
|
||||
}
|
||||
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
{
|
||||
// use cached icon if possible
|
||||
QIcon icon = mLabelSettingsIconCache.value( name );
|
||||
QIcon icon = mIconCache[ entityType ].value( name );
|
||||
if ( !icon.isNull() )
|
||||
return icon;
|
||||
|
||||
@ -290,7 +281,7 @@ QVariant QgsStyleModel::data( const QModelIndex &index, int role ) const
|
||||
{
|
||||
icon.addPixmap( QgsPalLayerSettings::labelSettingsPreviewPixmap( settings, s, QString(), static_cast< int >( s.width() * ICON_PADDING_FACTOR ) ) );
|
||||
}
|
||||
mLabelSettingsIconCache.insert( name, icon );
|
||||
mIconCache[ entityType ].insert( name, icon );
|
||||
return icon;
|
||||
}
|
||||
|
||||
@ -353,48 +344,17 @@ bool QgsStyleModel::setData( const QModelIndex &index, const QVariant &value, in
|
||||
QString name;
|
||||
switch ( entityType )
|
||||
{
|
||||
case QgsStyle::SymbolEntity:
|
||||
name = mSymbolNames.value( index.row() );
|
||||
break;
|
||||
|
||||
case QgsStyle::ColorrampEntity:
|
||||
name = mRampNames.value( index.row() - mSymbolNames.size() );
|
||||
break;
|
||||
|
||||
case QgsStyle::TextFormatEntity:
|
||||
name = mTextFormatNames.value( index.row() - mSymbolNames.size() - mRampNames.size() );
|
||||
break;
|
||||
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
name = mLabelSettingsNames.value( index.row() - mSymbolNames.size() - mRampNames.size() - mTextFormatNames.size() );
|
||||
break;
|
||||
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
return false;
|
||||
|
||||
default:
|
||||
name = mEntityNames[ entityType ].value( index.row() - offsetForEntity( entityType ) );
|
||||
break;
|
||||
}
|
||||
|
||||
const QString newName = value.toString();
|
||||
|
||||
switch ( entityType )
|
||||
{
|
||||
case QgsStyle::SymbolEntity:
|
||||
return mStyle->renameSymbol( name, newName );
|
||||
|
||||
case QgsStyle::ColorrampEntity:
|
||||
return mStyle->renameColorRamp( name, newName );
|
||||
|
||||
case QgsStyle::TextFormatEntity:
|
||||
return mStyle->renameTextFormat( name, newName );
|
||||
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
return mStyle->renameLabelSettings( name, newName );
|
||||
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
return mStyle->renameEntity( entityType, name, newName );
|
||||
}
|
||||
|
||||
case Tags:
|
||||
@ -469,7 +429,10 @@ int QgsStyleModel::rowCount( const QModelIndex &parent ) const
|
||||
{
|
||||
if ( !parent.isValid() )
|
||||
{
|
||||
return mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count() + mLabelSettingsNames.count();
|
||||
int count = 0;
|
||||
for ( QgsStyle::StyleEntity type : ENTITIES )
|
||||
count += mEntityNames[ type ].size();
|
||||
return count;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -485,57 +448,57 @@ void QgsStyleModel::addDesiredIconSize( QSize size )
|
||||
return;
|
||||
|
||||
mAdditionalSizes << size;
|
||||
mSymbolIconCache.clear();
|
||||
mColorRampIconCache.clear();
|
||||
mTextFormatIconCache.clear();
|
||||
mLabelSettingsIconCache.clear();
|
||||
mIconCache.clear();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onSymbolAdded( const QString &name, QgsSymbol * )
|
||||
void QgsStyleModel::onEntityAdded( QgsStyle::StyleEntity type, const QString &name )
|
||||
{
|
||||
mSymbolIconCache.remove( name );
|
||||
const QStringList oldSymbolNames = mSymbolNames;
|
||||
const QStringList newSymbolNames = mStyle->symbolNames();
|
||||
mIconCache[ type ].remove( name );
|
||||
const QStringList oldSymbolNames = mEntityNames[ type ];
|
||||
const QStringList newSymbolNames = mStyle->allNames( type );
|
||||
|
||||
// find index of newly added symbol
|
||||
const int newNameIndex = newSymbolNames.indexOf( name );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginInsertRows( QModelIndex(), newNameIndex, newNameIndex );
|
||||
mSymbolNames = newSymbolNames;
|
||||
const int offset = offsetForEntity( type );
|
||||
beginInsertRows( QModelIndex(), newNameIndex + offset, newNameIndex + offset );
|
||||
mEntityNames[ type ] = newSymbolNames;
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onSymbolRemoved( const QString &name )
|
||||
void QgsStyleModel::onEntityRemoved( QgsStyle::StyleEntity type, const QString &name )
|
||||
{
|
||||
mSymbolIconCache.remove( name );
|
||||
const QStringList oldSymbolNames = mSymbolNames;
|
||||
const QStringList newSymbolNames = mStyle->symbolNames();
|
||||
mIconCache[ type ].remove( name );
|
||||
const QStringList oldSymbolNames = mEntityNames[ type ];
|
||||
const QStringList newSymbolNames = mStyle->allNames( type );
|
||||
|
||||
// find index of removed symbol
|
||||
const int oldNameIndex = oldSymbolNames.indexOf( name );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginRemoveRows( QModelIndex(), oldNameIndex, oldNameIndex );
|
||||
mSymbolNames = newSymbolNames;
|
||||
const int offset = offsetForEntity( type );
|
||||
beginRemoveRows( QModelIndex(), oldNameIndex + offset, oldNameIndex + offset );
|
||||
mEntityNames[ type ] = newSymbolNames;
|
||||
endRemoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onSymbolChanged( const QString &name )
|
||||
void QgsStyleModel::onEntityChanged( QgsStyle::StyleEntity type, const QString &name )
|
||||
{
|
||||
mSymbolIconCache.remove( name );
|
||||
mIconCache[ type ].remove( name );
|
||||
|
||||
QModelIndex i = index( mSymbolNames.indexOf( name ), Tags );
|
||||
const int offset = offsetForEntity( type );
|
||||
QModelIndex i = index( offset + mEntityNames[ type ].indexOf( name ), Tags );
|
||||
emit dataChanged( i, i, QVector< int >() << Qt::DecorationRole );
|
||||
}
|
||||
|
||||
void QgsStyleModel::onSymbolRename( const QString &oldName, const QString &newName )
|
||||
void QgsStyleModel::onEntityRename( QgsStyle::StyleEntity type, const QString &oldName, const QString &newName )
|
||||
{
|
||||
mSymbolIconCache.remove( oldName );
|
||||
const QStringList oldSymbolNames = mSymbolNames;
|
||||
const QStringList newSymbolNames = mStyle->symbolNames();
|
||||
mIconCache[ type ].remove( oldName );
|
||||
const QStringList oldSymbolNames = mEntityNames[ type ];
|
||||
const QStringList newSymbolNames = mStyle->allNames( type );
|
||||
|
||||
// find index of removed symbol
|
||||
const int oldNameIndex = oldSymbolNames.indexOf( oldName );
|
||||
@ -549,257 +512,55 @@ void QgsStyleModel::onSymbolRename( const QString &oldName, const QString &newNa
|
||||
|
||||
if ( newNameIndex == oldNameIndex )
|
||||
{
|
||||
mSymbolNames = newSymbolNames;
|
||||
mEntityNames[ type ] = newSymbolNames;
|
||||
return;
|
||||
}
|
||||
|
||||
beginMoveRows( QModelIndex(), oldNameIndex, oldNameIndex, QModelIndex(), newNameIndex > oldNameIndex ? newNameIndex + 1 : newNameIndex );
|
||||
mSymbolNames = newSymbolNames;
|
||||
endMoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onRampAdded( const QString &name )
|
||||
{
|
||||
mColorRampIconCache.remove( name );
|
||||
const QStringList oldRampNames = mRampNames;
|
||||
const QStringList newRampNames = mStyle->colorRampNames();
|
||||
|
||||
// find index of newly added symbol
|
||||
const int newNameIndex = newRampNames.indexOf( name );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginInsertRows( QModelIndex(), newNameIndex + mSymbolNames.count(), newNameIndex + mSymbolNames.count() );
|
||||
mRampNames = newRampNames;
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onRampRemoved( const QString &name )
|
||||
{
|
||||
mColorRampIconCache.remove( name );
|
||||
const QStringList oldRampNames = mRampNames;
|
||||
const QStringList newRampNames = mStyle->colorRampNames();
|
||||
|
||||
// find index of removed symbol
|
||||
const int oldNameIndex = oldRampNames.indexOf( name );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginRemoveRows( QModelIndex(), oldNameIndex + mSymbolNames.count(), oldNameIndex + mSymbolNames.count() );
|
||||
mRampNames = newRampNames;
|
||||
endRemoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onRampChanged( const QString &name )
|
||||
{
|
||||
mColorRampIconCache.remove( name );
|
||||
|
||||
QModelIndex i = index( mSymbolNames.count() + mRampNames.indexOf( name ), Tags );
|
||||
emit dataChanged( i, i, QVector< int >() << Qt::DecorationRole );
|
||||
}
|
||||
|
||||
void QgsStyleModel::onRampRename( const QString &oldName, const QString &newName )
|
||||
{
|
||||
mColorRampIconCache.remove( oldName );
|
||||
const QStringList oldRampNames = mRampNames;
|
||||
const QStringList newRampNames = mStyle->colorRampNames();
|
||||
|
||||
// find index of removed ramp
|
||||
const int oldNameIndex = oldRampNames.indexOf( oldName );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
// find index of newly added ramp
|
||||
const int newNameIndex = newRampNames.indexOf( newName );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
if ( newNameIndex == oldNameIndex )
|
||||
{
|
||||
mRampNames = newRampNames;
|
||||
return;
|
||||
}
|
||||
|
||||
beginMoveRows( QModelIndex(), oldNameIndex + mSymbolNames.count(), oldNameIndex + mSymbolNames.count(),
|
||||
QModelIndex(), ( newNameIndex > oldNameIndex ? newNameIndex + 1 : newNameIndex ) + mSymbolNames.count() );
|
||||
mRampNames = newRampNames;
|
||||
endMoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onTextFormatAdded( const QString &name )
|
||||
{
|
||||
mTextFormatIconCache.remove( name );
|
||||
const QStringList oldTextFormatNames = mTextFormatNames;
|
||||
const QStringList newTextFormatNames = mStyle->textFormatNames();
|
||||
|
||||
// find index of newly added symbol
|
||||
const int newNameIndex = newTextFormatNames.indexOf( name );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginInsertRows( QModelIndex(), newNameIndex + mSymbolNames.count() + mRampNames.count(), newNameIndex + mSymbolNames.count() + mRampNames.count() );
|
||||
mTextFormatNames = newTextFormatNames;
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onTextFormatRemoved( const QString &name )
|
||||
{
|
||||
mTextFormatIconCache.remove( name );
|
||||
const QStringList oldTextFormatNames = mTextFormatNames;
|
||||
const QStringList newTextFormatNames = mStyle->textFormatNames();
|
||||
|
||||
// find index of removed symbol
|
||||
const int oldNameIndex = oldTextFormatNames.indexOf( name );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginRemoveRows( QModelIndex(), oldNameIndex + mSymbolNames.count() + mRampNames.count(), oldNameIndex + mSymbolNames.count() + mRampNames.count() );
|
||||
mTextFormatNames = newTextFormatNames;
|
||||
endRemoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onTextFormatChanged( const QString &name )
|
||||
{
|
||||
mTextFormatIconCache.remove( name );
|
||||
|
||||
QModelIndex i = index( mSymbolNames.count() + mRampNames.count() + mTextFormatNames.indexOf( name ), Tags );
|
||||
emit dataChanged( i, i, QVector< int >() << Qt::DecorationRole );
|
||||
}
|
||||
|
||||
void QgsStyleModel::onTextFormatRename( const QString &oldName, const QString &newName )
|
||||
{
|
||||
mTextFormatIconCache.remove( oldName );
|
||||
const QStringList oldTextFormatNames = mTextFormatNames;
|
||||
const QStringList newTextFormatNames = mStyle->textFormatNames();
|
||||
|
||||
// find index of removed format
|
||||
const int oldNameIndex = oldTextFormatNames.indexOf( oldName );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
// find index of newly added format
|
||||
const int newNameIndex = newTextFormatNames.indexOf( newName );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
if ( newNameIndex == oldNameIndex )
|
||||
{
|
||||
mTextFormatNames = newTextFormatNames;
|
||||
return;
|
||||
}
|
||||
|
||||
beginMoveRows( QModelIndex(), oldNameIndex + mSymbolNames.count() + mRampNames.count(), oldNameIndex + mSymbolNames.count() + mRampNames.count(),
|
||||
QModelIndex(), ( newNameIndex > oldNameIndex ? newNameIndex + 1 : newNameIndex ) + mSymbolNames.count() + mRampNames.count() );
|
||||
mTextFormatNames = newTextFormatNames;
|
||||
endMoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onLabelSettingsAdded( const QString &name )
|
||||
{
|
||||
mLabelSettingsIconCache.remove( name );
|
||||
const QStringList oldLabelSettingsNames = mLabelSettingsNames;
|
||||
const QStringList newLabelSettingsNames = mStyle->labelSettingsNames();
|
||||
|
||||
// find index of newly added symbol
|
||||
const int newNameIndex = newLabelSettingsNames.indexOf( name );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginInsertRows( QModelIndex(), newNameIndex + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count(), newNameIndex + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count() );
|
||||
mLabelSettingsNames = newLabelSettingsNames;
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onLabelSettingsRemoved( const QString &name )
|
||||
{
|
||||
mLabelSettingsIconCache.remove( name );
|
||||
const QStringList oldLabelSettingsNames = mLabelSettingsNames;
|
||||
const QStringList newLabelSettingsNames = mStyle->labelSettingsNames();
|
||||
|
||||
// find index of removed symbol
|
||||
const int oldNameIndex = oldLabelSettingsNames.indexOf( name );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
beginRemoveRows( QModelIndex(), oldNameIndex + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count(), oldNameIndex + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count() );
|
||||
mLabelSettingsNames = newLabelSettingsNames;
|
||||
endRemoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onLabelSettingsChanged( const QString &name )
|
||||
{
|
||||
mLabelSettingsIconCache.remove( name );
|
||||
|
||||
QModelIndex i = index( mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count() + mLabelSettingsNames.indexOf( name ), Tags );
|
||||
emit dataChanged( i, i, QVector< int >() << Qt::DecorationRole );
|
||||
}
|
||||
|
||||
void QgsStyleModel::onLabelSettingsRename( const QString &oldName, const QString &newName )
|
||||
{
|
||||
mLabelSettingsIconCache.remove( oldName );
|
||||
const QStringList oldLabelSettingsNames = mLabelSettingsNames;
|
||||
const QStringList newLabelSettingsNames = mStyle->labelSettingsNames();
|
||||
|
||||
// find index of removed format
|
||||
const int oldNameIndex = oldLabelSettingsNames.indexOf( oldName );
|
||||
if ( oldNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
// find index of newly added format
|
||||
const int newNameIndex = newLabelSettingsNames.indexOf( newName );
|
||||
if ( newNameIndex < 0 )
|
||||
return; // shouldn't happen
|
||||
|
||||
if ( newNameIndex == oldNameIndex )
|
||||
{
|
||||
mLabelSettingsNames = newLabelSettingsNames;
|
||||
return;
|
||||
}
|
||||
|
||||
beginMoveRows( QModelIndex(), oldNameIndex + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count(), oldNameIndex + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count(),
|
||||
QModelIndex(), ( newNameIndex > oldNameIndex ? newNameIndex + 1 : newNameIndex ) + mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count() );
|
||||
mLabelSettingsNames = newLabelSettingsNames;
|
||||
const int offset = offsetForEntity( type );
|
||||
beginMoveRows( QModelIndex(), oldNameIndex + offset, oldNameIndex + offset, QModelIndex(), ( newNameIndex > oldNameIndex ? newNameIndex + 1 : newNameIndex ) + offset );
|
||||
mEntityNames[ type ] = newSymbolNames;
|
||||
endMoveRows();
|
||||
}
|
||||
|
||||
void QgsStyleModel::onTagsChanged( int entity, const QString &name, const QStringList & )
|
||||
{
|
||||
QgsStyle::StyleEntity type = static_cast< QgsStyle::StyleEntity >( entity );
|
||||
QModelIndex i;
|
||||
int row = mEntityNames[type].indexOf( name ) + offsetForEntity( type );
|
||||
switch ( static_cast< QgsStyle::StyleEntity >( entity ) )
|
||||
{
|
||||
case QgsStyle::SymbolEntity:
|
||||
i = index( mSymbolNames.indexOf( name ), Tags );
|
||||
break;
|
||||
|
||||
case QgsStyle::ColorrampEntity:
|
||||
i = index( mSymbolNames.count() + mRampNames.indexOf( name ), Tags );
|
||||
break;
|
||||
|
||||
case QgsStyle::TextFormatEntity:
|
||||
i = index( mSymbolNames.count() + mRampNames.count() + mTextFormatNames.indexOf( name ), Tags );
|
||||
break;
|
||||
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
i = index( mSymbolNames.count() + mRampNames.count() + mTextFormatNames.count() + mLabelSettingsNames.indexOf( name ), Tags );
|
||||
break;
|
||||
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
return;
|
||||
|
||||
default:
|
||||
i = index( row, Tags );
|
||||
}
|
||||
emit dataChanged( i, i );
|
||||
}
|
||||
|
||||
void QgsStyleModel::rebuildSymbolIcons()
|
||||
{
|
||||
mSymbolIconCache.clear();
|
||||
mIconCache[ QgsStyle::SymbolEntity ].clear();
|
||||
mExpressionContext.reset();
|
||||
emit dataChanged( index( 0, 0 ), index( mSymbolNames.count() - 1, 0 ), QVector<int>() << Qt::DecorationRole );
|
||||
emit dataChanged( index( 0, 0 ), index( mEntityNames[ QgsStyle::SymbolEntity ].count() - 1, 0 ), QVector<int>() << Qt::DecorationRole );
|
||||
}
|
||||
|
||||
QgsStyle::StyleEntity QgsStyleModel::entityTypeFromRow( int row ) const
|
||||
{
|
||||
if ( row >= mStyle->symbolCount() + mStyle->colorRampCount() + + mTextFormatNames.count() )
|
||||
// NOTE -- this is just here to throw warnings when new entity types are added, ensuring that this logic gets upgraded!!
|
||||
switch ( 0 )
|
||||
{
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
case QgsStyle::TextFormatEntity:
|
||||
case QgsStyle::ColorrampEntity:
|
||||
case QgsStyle::SymbolEntity:
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
break;
|
||||
}
|
||||
|
||||
if ( row >= mStyle->symbolCount() + mStyle->colorRampCount() + mEntityNames[ QgsStyle::TextFormatEntity ].count() )
|
||||
return QgsStyle::LabelSettingsEntity;
|
||||
else if ( row >= mStyle->symbolCount() + mStyle->colorRampCount() )
|
||||
return QgsStyle::TextFormatEntity;
|
||||
@ -808,6 +569,28 @@ QgsStyle::StyleEntity QgsStyleModel::entityTypeFromRow( int row ) const
|
||||
return QgsStyle::SymbolEntity;
|
||||
}
|
||||
|
||||
int QgsStyleModel::offsetForEntity( QgsStyle::StyleEntity entity ) const
|
||||
{
|
||||
int offset = 0;
|
||||
switch ( entity )
|
||||
{
|
||||
case QgsStyle::LabelSettingsEntity:
|
||||
offset += mEntityNames[ QgsStyle::TextFormatEntity ].size();
|
||||
FALLTHROUGH
|
||||
case QgsStyle::TextFormatEntity:
|
||||
offset += mEntityNames[ QgsStyle::ColorrampEntity ].size();
|
||||
FALLTHROUGH
|
||||
case QgsStyle::ColorrampEntity:
|
||||
offset += mEntityNames[ QgsStyle::SymbolEntity ].size();
|
||||
FALLTHROUGH
|
||||
case QgsStyle::SymbolEntity:
|
||||
case QgsStyle::TagEntity:
|
||||
case QgsStyle::SmartgroupEntity:
|
||||
break;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
|
||||
//
|
||||
// QgsStyleProxyModel
|
||||
//
|
||||
@ -984,16 +767,11 @@ void QgsStyleProxyModel::setTagId( int id )
|
||||
{
|
||||
mTagId = id;
|
||||
|
||||
mTaggedSymbolNames.clear();
|
||||
if ( mTagId >= 0 )
|
||||
{
|
||||
mTaggedSymbolNames = mStyle->symbolsWithTag( QgsStyle::SymbolEntity, mTagId );
|
||||
mTaggedSymbolNames.append( mStyle->symbolsWithTag( QgsStyle::ColorrampEntity, mTagId ) );
|
||||
mTaggedSymbolNames.append( mStyle->symbolsWithTag( QgsStyle::TextFormatEntity, mTagId ) );
|
||||
mTaggedSymbolNames.append( mStyle->symbolsWithTag( QgsStyle::LabelSettingsEntity, mTagId ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
mTaggedSymbolNames.clear();
|
||||
for ( QgsStyle::StyleEntity entity : ENTITIES )
|
||||
mTaggedSymbolNames.append( mStyle->symbolsWithTag( entity, mTagId ) );
|
||||
}
|
||||
|
||||
invalidateFilter();
|
||||
@ -1008,18 +786,12 @@ void QgsStyleProxyModel::setSmartGroupId( int id )
|
||||
{
|
||||
mSmartGroupId = id;
|
||||
|
||||
mSmartGroupSymbolNames.clear();
|
||||
if ( mSmartGroupId >= 0 )
|
||||
{
|
||||
mSmartGroupSymbolNames = mStyle->symbolsOfSmartgroup( QgsStyle::SymbolEntity, mSmartGroupId );
|
||||
mSmartGroupSymbolNames.append( mStyle->symbolsOfSmartgroup( QgsStyle::ColorrampEntity, mSmartGroupId ) );
|
||||
mSmartGroupSymbolNames.append( mStyle->symbolsOfSmartgroup( QgsStyle::TextFormatEntity, mSmartGroupId ) );
|
||||
mSmartGroupSymbolNames.append( mStyle->symbolsOfSmartgroup( QgsStyle::LabelSettingsEntity, mSmartGroupId ) );
|
||||
for ( QgsStyle::StyleEntity entity : ENTITIES )
|
||||
mSmartGroupSymbolNames.append( mStyle->symbolsOfSmartgroup( entity, mSmartGroupId ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
mSmartGroupSymbolNames.clear();
|
||||
}
|
||||
|
||||
invalidateFilter();
|
||||
}
|
||||
|
||||
|
@ -100,45 +100,28 @@ class CORE_EXPORT QgsStyleModel: public QAbstractItemModel
|
||||
|
||||
private slots:
|
||||
|
||||
void onSymbolAdded( const QString &name, QgsSymbol *symbol );
|
||||
void onSymbolRemoved( const QString &name );
|
||||
void onSymbolChanged( const QString &name );
|
||||
void onSymbolRename( const QString &oldName, const QString &newName );
|
||||
void onRampAdded( const QString &name );
|
||||
void onRampRemoved( const QString &name );
|
||||
void onRampChanged( const QString &name );
|
||||
void onRampRename( const QString &oldName, const QString &newName );
|
||||
|
||||
void onTextFormatAdded( const QString &name );
|
||||
void onTextFormatRemoved( const QString &name );
|
||||
void onTextFormatChanged( const QString &name );
|
||||
void onTextFormatRename( const QString &oldName, const QString &newName );
|
||||
|
||||
void onLabelSettingsAdded( const QString &name );
|
||||
void onLabelSettingsRemoved( const QString &name );
|
||||
void onLabelSettingsChanged( const QString &name );
|
||||
void onLabelSettingsRename( const QString &oldName, const QString &newName );
|
||||
|
||||
void onEntityAdded( QgsStyle::StyleEntity type, const QString &name );
|
||||
void onEntityRemoved( QgsStyle::StyleEntity type, const QString &name );
|
||||
void onEntityChanged( QgsStyle::StyleEntity type, const QString &name );
|
||||
void onEntityRename( QgsStyle::StyleEntity type, const QString &oldName, const QString &newName );
|
||||
void onTagsChanged( int entity, const QString &name, const QStringList &tags );
|
||||
void rebuildSymbolIcons();
|
||||
|
||||
private:
|
||||
|
||||
QgsStyle *mStyle = nullptr;
|
||||
QStringList mSymbolNames;
|
||||
QStringList mRampNames;
|
||||
QStringList mTextFormatNames;
|
||||
QStringList mLabelSettingsNames;
|
||||
|
||||
QHash< QgsStyle::StyleEntity, QStringList > mEntityNames;
|
||||
|
||||
QList< QSize > mAdditionalSizes;
|
||||
mutable std::unique_ptr< QgsExpressionContext > mExpressionContext;
|
||||
|
||||
mutable QHash< QString, QIcon > mSymbolIconCache;
|
||||
mutable QHash< QString, QIcon > mColorRampIconCache;
|
||||
mutable QHash< QString, QIcon > mTextFormatIconCache;
|
||||
mutable QHash< QString, QIcon > mLabelSettingsIconCache;
|
||||
mutable QHash< QgsStyle::StyleEntity, QHash< QString, QIcon > > mIconCache;
|
||||
|
||||
QgsStyle::StyleEntity entityTypeFromRow( int row ) const;
|
||||
|
||||
int offsetForEntity( QgsStyle::StyleEntity entity ) const;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user