Skip to content

Commit 6af7dbd

Browse files
committed
[composer] Create base item widget class for composer items, clean up and remove duplicate code
1 parent 57980ab commit 6af7dbd

20 files changed

+275
-224
lines changed

src/app/composer/qgscomposerarrowwidget.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include <QFileDialog>
2323
#include <QFileInfo>
2424

25-
QgsComposerArrowWidget::QgsComposerArrowWidget( QgsComposerArrow* arrow ): QWidget( 0 ), mArrow( arrow )
25+
QgsComposerArrowWidget::QgsComposerArrowWidget( QgsComposerArrow* arrow ): QgsComposerItemBaseWidget( 0, arrow ), mArrow( arrow )
2626
{
2727
setupUi( this );
2828
mRadioButtonGroup = new QButtonGroup( this );

src/app/composer/qgscomposerarrowwidget.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
#define QGSCOMPOSERARROWWIDGET_H
2020

2121
#include "ui_qgscomposerarrowwidgetbase.h"
22+
#include "qgscomposeritemwidget.h"
2223

2324
class QgsComposerArrow;
2425

25-
class QgsComposerArrowWidget: public QWidget, private Ui::QgsComposerArrowWidgetBase
26+
class QgsComposerArrowWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerArrowWidgetBase
2627
{
2728
Q_OBJECT
2829
public:

src/app/composer/qgscomposerhtmlwidget.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include <QFileDialog>
2222
#include <QSettings>
2323

24-
QgsComposerHtmlWidget::QgsComposerHtmlWidget( QgsComposerHtml* html, QgsComposerFrame* frame ): QWidget(), mHtml( html ), mFrame( frame )
24+
QgsComposerHtmlWidget::QgsComposerHtmlWidget( QgsComposerHtml* html, QgsComposerFrame* frame ): QgsComposerItemBaseWidget( 0, frame ), mHtml( html ), mFrame( frame )
2525
{
2626
setupUi( this );
2727

@@ -47,7 +47,7 @@ QgsComposerHtmlWidget::QgsComposerHtmlWidget( QgsComposerHtml* html, QgsComposer
4747
}
4848
}
4949

50-
QgsComposerHtmlWidget::QgsComposerHtmlWidget()
50+
QgsComposerHtmlWidget::QgsComposerHtmlWidget(): QgsComposerItemBaseWidget( 0, 0 )
5151
{
5252
}
5353

src/app/composer/qgscomposerhtmlwidget.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@
1616
#define QGSCOMPOSERHTMLWIDGET_H
1717

1818
#include "ui_qgscomposerhtmlwidgetbase.h"
19+
#include "qgscomposeritemwidget.h"
1920

2021
class QgsComposerHtml;
2122
class QgsComposerFrame;
2223

23-
class QgsComposerHtmlWidget: public QWidget, private Ui::QgsComposerHtmlWidgetBase
24+
class QgsComposerHtmlWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerHtmlWidgetBase
2425
{
2526
Q_OBJECT
2627
public:

src/app/composer/qgscomposeritemwidget.cpp

+47-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,52 @@
2323
#include <QColorDialog>
2424
#include <QPen>
2525

26-
QgsComposerItemWidget::QgsComposerItemWidget( QWidget* parent, QgsComposerItem* item ): QWidget( parent ), mItem( item )
26+
27+
//QgsComposerItemBaseWidget
28+
29+
QgsComposerItemBaseWidget::QgsComposerItemBaseWidget( QWidget* parent, QgsComposerItem* item ): QWidget( parent ), mItem( item )
30+
{
31+
32+
}
33+
34+
QgsComposerItemBaseWidget::~QgsComposerItemBaseWidget()
35+
{
36+
37+
}
38+
39+
QgsAtlasComposition* QgsComposerItemBaseWidget::atlasComposition() const
40+
{
41+
if ( !mItem )
42+
{
43+
return 0;
44+
}
45+
46+
QgsComposition* composition = mItem->composition();
47+
48+
if ( !composition )
49+
{
50+
return 0;
51+
}
52+
53+
return &composition->atlasComposition();
54+
}
55+
56+
QgsVectorLayer* QgsComposerItemBaseWidget::atlasCoverageLayer() const
57+
{
58+
QgsAtlasComposition* atlasMap = atlasComposition();
59+
60+
if ( atlasMap && atlasMap->enabled() )
61+
{
62+
return atlasMap->coverageLayer();
63+
}
64+
65+
return 0;
66+
}
67+
68+
69+
//QgsComposerItemWidget
70+
71+
QgsComposerItemWidget::QgsComposerItemWidget( QWidget* parent, QgsComposerItem* item ): QgsComposerItemBaseWidget( parent, item )
2772
{
2873

2974
setupUi( this );
@@ -55,7 +100,7 @@ QgsComposerItemWidget::QgsComposerItemWidget( QWidget* parent, QgsComposerItem*
55100
connect( mTransparencySpnBx, SIGNAL( valueChanged( int ) ), mTransparencySlider, SLOT( setValue( int ) ) );
56101
}
57102

58-
QgsComposerItemWidget::QgsComposerItemWidget(): QWidget( 0 ), mItem( 0 )
103+
QgsComposerItemWidget::QgsComposerItemWidget(): QgsComposerItemBaseWidget( 0, 0 )
59104
{
60105

61106
}

src/app/composer/qgscomposeritemwidget.h

+22-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,31 @@
2222
#include "qgscomposeritem.h"
2323

2424
class QgsComposerItem;
25+
class QgsAtlasComposition;
26+
27+
/**A base class for property widgets for composer items. All composer item widgets should inherit from
28+
* this base class.
29+
*/
30+
class QgsComposerItemBaseWidget: public QWidget
31+
{
32+
Q_OBJECT
33+
public:
34+
QgsComposerItemBaseWidget( QWidget* parent, QgsComposerItem* item );
35+
~QgsComposerItemBaseWidget();
36+
37+
protected:
38+
/**Returns the current atlas coverage layer (if set)*/
39+
QgsVectorLayer* atlasCoverageLayer() const;
40+
41+
/**Returns the atlas for the composition*/
42+
QgsAtlasComposition *atlasComposition() const;
43+
44+
QgsComposerItem* mItem;
45+
};
2546

2647
/**A class to enter generic properties for composer items (e.g. background, outline, frame).
2748
This widget can be embedded into other item widgets*/
28-
class QgsComposerItemWidget: public QWidget, private Ui::QgsComposerItemWidgetBase
49+
class QgsComposerItemWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerItemWidgetBase
2950
{
3051
Q_OBJECT
3152
public:
@@ -92,7 +113,6 @@ class QgsComposerItemWidget: public QWidget, private Ui::QgsComposerItemWidgetBa
92113
// void changeItemTransparency( int value );
93114
void changeItemPosition();
94115

95-
QgsComposerItem* mItem;
96116
};
97117

98118
#endif //QGSCOMPOSERITEMWIDGET_H

src/app/composer/qgscomposerlabelwidget.cpp

+2-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include <QFontDialog>
2626
#include <QWidget>
2727

28-
QgsComposerLabelWidget::QgsComposerLabelWidget( QgsComposerLabel* label ): QWidget(), mComposerLabel( label )
28+
QgsComposerLabelWidget::QgsComposerLabelWidget( QgsComposerLabel* label ): QgsComposerItemBaseWidget( 0, label ), mComposerLabel( label )
2929
{
3030
setupUi( this );
3131

@@ -138,12 +138,8 @@ void QgsComposerLabelWidget::on_mInsertExpressionButton_clicked()
138138
if ( selText.startsWith( "[%" ) && selText.endsWith( "%]" ) )
139139
selText = selText.mid( 2, selText.size() - 4 );
140140

141-
QgsVectorLayer* coverageLayer = 0;
142141
// use the atlas coverage layer, if any
143-
if ( mComposerLabel->composition()->atlasComposition().enabled() )
144-
{
145-
coverageLayer = mComposerLabel->composition()->atlasComposition().coverageLayer();
146-
}
142+
QgsVectorLayer* coverageLayer = atlasCoverageLayer();
147143
QgsExpressionBuilderDialog exprDlg( coverageLayer, selText, this );
148144
exprDlg.setWindowTitle( tr( "Insert expression" ) );
149145
if ( exprDlg.exec() == QDialog::Accepted )

src/app/composer/qgscomposerlabelwidget.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@
1919
#define QGSCOMPOSERLABELWIDGET
2020

2121
#include "ui_qgscomposerlabelwidgetbase.h"
22+
#include "qgscomposeritemwidget.h"
2223

2324
class QgsComposerLabel;
2425

2526
/** \ingroup MapComposer
2627
* A widget to enter text, font size, box yes/no for composer labels
2728
*/
28-
class QgsComposerLabelWidget: public QWidget, private Ui::QgsComposerLabelWidgetBase
29+
class QgsComposerLabelWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerLabelWidgetBase
2930
{
3031
Q_OBJECT
3132
public:

src/app/composer/qgscomposerlegendwidget.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void QgsComposerLegendWidgetStyleDelegate::updateEditorGeometry( QWidget *editor
105105
}
106106

107107

108-
QgsComposerLegendWidget::QgsComposerLegendWidget( QgsComposerLegend* legend ): mLegend( legend )
108+
QgsComposerLegendWidget::QgsComposerLegendWidget( QgsComposerLegend* legend ): QgsComposerItemBaseWidget( 0, legend ), mLegend( legend )
109109
{
110110
setupUi( this );
111111

@@ -145,7 +145,7 @@ QgsComposerLegendWidget::QgsComposerLegendWidget( QgsComposerLegend* legend ): m
145145
this, SLOT( selectedChanged( const QModelIndex &, const QModelIndex & ) ) );
146146
}
147147

148-
QgsComposerLegendWidget::QgsComposerLegendWidget(): mLegend( 0 )
148+
QgsComposerLegendWidget::QgsComposerLegendWidget(): QgsComposerItemBaseWidget( 0, 0 ), mLegend( 0 )
149149
{
150150
setupUi( this );
151151
}

src/app/composer/qgscomposerlegendwidget.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#define QGSCOMPOSERLEGENDWIDGET_H
2020

2121
#include "ui_qgscomposerlegendwidgetbase.h"
22+
#include "qgscomposeritemwidget.h"
2223
#include <QWidget>
2324
#include <QItemDelegate>
2425

@@ -39,7 +40,7 @@ class QgsComposerLegendWidgetStyleDelegate : public QItemDelegate
3940
/** \ingroup MapComposer
4041
* A widget for setting properties relating to a composer legend.
4142
*/
42-
class QgsComposerLegendWidget: public QWidget, private Ui::QgsComposerLegendWidgetBase
43+
class QgsComposerLegendWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerLegendWidgetBase
4344
{
4445
Q_OBJECT
4546

0 commit comments

Comments
 (0)