23
23
#include " qgsserverprojectutils.h"
24
24
25
25
#include " qgslayoutmanager.h"
26
- #include " qgscomposition.h"
27
- #include " qgscomposermap.h"
28
- #include " qgscomposerlabel.h"
29
- #include " qgscomposerhtml.h"
30
- #include " qgscomposerframe.h"
26
+ #include " qgsprintlayout.h"
27
+ #include " qgslayoutitemmap.h"
28
+ #include " qgslayoutitemlabel.h"
29
+ #include " qgslayoutitemhtml.h"
30
+ #include " qgslayoutframe.h"
31
+ #include " qgslayoutpagecollection.h"
31
32
32
33
#include " qgslayertreenode.h"
33
34
#include " qgslayertreegroup.h"
@@ -624,48 +625,61 @@ namespace QgsWms
624
625
625
626
QDomElement getComposerTemplatesElement ( QDomDocument &doc, const QgsProject *project )
626
627
{
627
- QList<QgsComposition * > projectComposers = project->layoutManager ()->compositions ();
628
+ QList< QgsPrintLayout * > projectComposers = project->layoutManager ()->printLayouts ();
628
629
if ( projectComposers.size () == 0 )
629
630
return QDomElement ();
630
631
631
632
QStringList restrictedComposers = QgsServerProjectUtils::wmsRestrictedComposers ( *project );
632
633
633
634
QDomElement composerTemplatesElem = doc.createElement ( QStringLiteral ( " ComposerTemplates" ) );
634
- QList<QgsComposition *>::const_iterator cIt = projectComposers.constBegin ();
635
+ QList<QgsPrintLayout *>::const_iterator cIt = projectComposers.constBegin ();
635
636
for ( ; cIt != projectComposers.constEnd (); ++cIt )
636
637
{
637
- QgsComposition *composer = *cIt;
638
- if ( restrictedComposers.contains ( composer ->name () ) )
638
+ QgsPrintLayout *layout = *cIt;
639
+ if ( restrictedComposers.contains ( layout ->name () ) )
639
640
continue ;
640
641
642
+ // Check that we have at least one page
643
+ if ( layout->pageCollection ()->pageCount () < 1 )
644
+ continue ;
645
+
646
+ // Get width and height from first page of the collection
647
+ QgsLayoutSize layoutSize ( layout->pageCollection ()->page ( 0 )->sizeWithUnits () );
648
+ QgsLayoutMeasurement width ( layout->convertFromLayoutUnits ( layoutSize.width (), QgsUnitTypes::LayoutUnit::LayoutMillimeters ) );
649
+ QgsLayoutMeasurement height ( layout->convertFromLayoutUnits ( layoutSize.height (), QgsUnitTypes::LayoutUnit::LayoutMillimeters ) );
650
+
641
651
QDomElement composerTemplateElem = doc.createElement ( QStringLiteral ( " ComposerTemplate" ) );
642
- composerTemplateElem.setAttribute ( QStringLiteral ( " name" ), composer ->name () );
652
+ composerTemplateElem.setAttribute ( QStringLiteral ( " name" ), layout ->name () );
643
653
644
- // get paper width and hight in mm from composition
645
- composerTemplateElem.setAttribute ( QStringLiteral ( " width" ), composer-> paperWidth () );
646
- composerTemplateElem.setAttribute ( QStringLiteral ( " height" ), composer-> paperHeight () );
654
+ // get paper width and height in mm from composition
655
+ composerTemplateElem.setAttribute ( QStringLiteral ( " width" ), width. length () );
656
+ composerTemplateElem.setAttribute ( QStringLiteral ( " height" ), height. length () );
647
657
648
658
// add available composer maps and their size in mm
649
- QList<const QgsComposerMap *> composerMapList = composer->composerMapItems ();
650
- QList<const QgsComposerMap *>::const_iterator cmIt = composerMapList.constBegin ();
651
- for ( ; cmIt != composerMapList.constEnd (); ++cmIt )
659
+ QList<QgsLayoutItemMap *> layoutMapList;
660
+ layout->layoutItems <QgsLayoutItemMap>( layoutMapList );
661
+ QList<QgsLayoutItemMap *>::const_iterator cmIt = layoutMapList.constBegin ();
662
+ // Add map id
663
+ int mapId = 0 ;
664
+ for ( ; cmIt != layoutMapList.constEnd (); ++cmIt )
652
665
{
653
- const QgsComposerMap *composerMap = *cmIt;
666
+ const QgsLayoutItemMap *composerMap = *cmIt;
654
667
655
668
QDomElement composerMapElem = doc.createElement ( QStringLiteral ( " ComposerMap" ) );
656
- composerMapElem.setAttribute ( QStringLiteral ( " name" ), QStringLiteral ( " map%1" ).arg ( composerMap->id () ) );
669
+ composerMapElem.setAttribute ( QStringLiteral ( " name" ), QStringLiteral ( " map%1" ).arg ( mapId ) );
670
+ mapId++;
657
671
composerMapElem.setAttribute ( QStringLiteral ( " width" ), composerMap->rect ().width () );
658
672
composerMapElem.setAttribute ( QStringLiteral ( " height" ), composerMap->rect ().height () );
659
673
composerTemplateElem.appendChild ( composerMapElem );
660
674
}
661
675
662
676
// add available composer labels
663
- QList<QgsComposerLabel *> composerLabelList;
664
- composer-> composerItems ( composerLabelList );
665
- QList<QgsComposerLabel *>::const_iterator clIt = composerLabelList.constBegin ();
677
+ QList<QgsLayoutItemLabel *> composerLabelList;
678
+ layout-> layoutItems <QgsLayoutItemLabel> ( composerLabelList );
679
+ QList<QgsLayoutItemLabel *>::const_iterator clIt = composerLabelList.constBegin ();
666
680
for ( ; clIt != composerLabelList.constEnd (); ++clIt )
667
681
{
668
- QgsComposerLabel *composerLabel = *clIt;
682
+ QgsLayoutItemLabel *composerLabel = *clIt;
669
683
QString id = composerLabel->id ();
670
684
if ( id.isEmpty () )
671
685
continue ;
@@ -676,12 +690,12 @@ namespace QgsWms
676
690
}
677
691
678
692
// add available composer HTML
679
- QList<QgsComposerHtml *> composerHtmlList;
680
- composer-> composerItems ( composerHtmlList );
681
- QList<QgsComposerHtml *>::const_iterator chIt = composerHtmlList.constBegin ();
693
+ QList<QgsLayoutItemHtml *> composerHtmlList;
694
+ layout-> layoutObjects <QgsLayoutItemHtml> ( composerHtmlList );
695
+ QList<QgsLayoutItemHtml *>::const_iterator chIt = composerHtmlList.constBegin ();
682
696
for ( ; chIt != composerHtmlList.constEnd (); ++chIt )
683
697
{
684
- QgsComposerHtml *composerHtml = *chIt;
698
+ QgsLayoutItemHtml *composerHtml = *chIt;
685
699
if ( composerHtml->frameCount () == 0 )
686
700
continue ;
687
701
0 commit comments