@@ -74,27 +74,12 @@ QgsComposerManager::QgsComposerManager( QWidget * parent, Qt::WindowFlags f ): Q
7474
7575 mUserTemplatesDir = QgsApplication::qgisSettingsDirPath () + " /composer_templates" ;
7676 QMap<QString, QString> userTemplateMap = defaultTemplates ( true );
77- if ( userTemplateMap.size () > 0 )
78- {
79- mTemplate ->insertSeparator ( mTemplate ->count () );
80- QMap<QString, QString>::const_iterator templateIt = userTemplateMap.constBegin ();
81- for ( ; templateIt != userTemplateMap.constEnd (); ++templateIt )
82- {
83- mTemplate ->addItem ( templateIt.key (), templateIt.value () );
84- }
85- }
77+ this ->addTemplates ( userTemplateMap );
8678
8779 mDefaultTemplatesDir = QgsApplication::pkgDataPath () + " /composer_templates" ;
8880 QMap<QString, QString> defaultTemplateMap = defaultTemplates ( false );
89- if ( defaultTemplateMap.size () > 0 )
90- {
91- mTemplate ->insertSeparator ( mTemplate ->count () );
92- QMap<QString, QString>::const_iterator templateIt = defaultTemplateMap.constBegin ();
93- for ( ; templateIt != defaultTemplateMap.constEnd (); ++templateIt )
94- {
95- mTemplate ->addItem ( templateIt.key (), templateIt.value () );
96- }
97- }
81+ this ->addTemplates ( defaultTemplateMap );
82+ this ->addTemplates ( this ->otherTemplates () );
9883
9984 mTemplatePathLineEdit ->setText ( settings.value ( " /UI/ComposerManager/templatePath" , QString () ).toString () );
10085
@@ -135,6 +120,20 @@ void QgsComposerManager::refreshComposers()
135120 }
136121}
137122
123+ void QgsComposerManager::addTemplates ( QMap<QString, QString> templates )
124+ {
125+ if ( templates.size () > 0 )
126+ {
127+ mTemplate ->insertSeparator ( mTemplate ->count () );
128+ QMap<QString, QString>::const_iterator templateIt = templates.constBegin ();
129+ for ( ; templateIt != templates.constEnd (); ++templateIt )
130+ {
131+ mTemplate ->addItem ( templateIt.key (), templateIt.value () );
132+ }
133+ }
134+
135+ }
136+
138137void QgsComposerManager::activate ()
139138{
140139 raise ();
@@ -144,17 +143,39 @@ void QgsComposerManager::activate()
144143
145144QMap<QString, QString> QgsComposerManager::defaultTemplates ( bool fromUser ) const
146145{
147- QMap<QString, QString> templateMap;
148-
149146 // search for default templates in $pkgDataPath/composer_templates
150147 // user templates in $qgisSettingsDirPath/composer_templates
151- QDir defaultTemplateDir ( fromUser ? mUserTemplatesDir : mDefaultTemplatesDir );
152- if ( !defaultTemplateDir.exists () )
148+ return templatesFromPath ( fromUser ? mUserTemplatesDir : mDefaultTemplatesDir );
149+ }
150+
151+ QMap<QString, QString> QgsComposerManager::otherTemplates () const
152+ {
153+ QMap<QString, QString> templateMap;
154+ QStringList paths = QgsApplication::composerTemplatePaths ();
155+ Q_FOREACH ( QString path, paths )
156+ {
157+ QMap<QString, QString> templates = templatesFromPath ( path );
158+ QMap<QString, QString>::const_iterator templateIt = templates.constBegin ();
159+ for ( ; templateIt != templates.constEnd (); ++templateIt )
160+ {
161+ templateMap.insert ( templateIt.key (), templateIt.value () );
162+ }
163+ }
164+ return templateMap;
165+ }
166+
167+
168+ QMap<QString, QString> QgsComposerManager::templatesFromPath ( QString path ) const
169+ {
170+ QMap<QString, QString> templateMap;
171+
172+ QDir templateDir ( path );
173+ if ( !templateDir.exists () )
153174 {
154175 return templateMap;
155176 }
156177
157- QFileInfoList fileInfoList = defaultTemplateDir .entryInfoList ( QDir::Files );
178+ QFileInfoList fileInfoList = templateDir .entryInfoList ( QDir::Files );
158179 QFileInfoList::const_iterator infoIt = fileInfoList.constBegin ();
159180 for ( ; infoIt != fileInfoList.constEnd (); ++infoIt )
160181 {
0 commit comments