Skip to content

Commit 6af7dbd

Browse files
committedJul 4, 2014
[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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 1 deletion
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

Lines changed: 47 additions & 2 deletions
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

Lines changed: 22 additions & 2 deletions
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

Lines changed: 2 additions & 6 deletions
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

Lines changed: 2 additions & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 1 deletion
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

‎src/app/composer/qgscomposermapwidget.cpp

Lines changed: 172 additions & 179 deletions
Large diffs are not rendered by default.

‎src/app/composer/qgscomposermapwidget.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@
2020

2121
#include "ui_qgscomposermapwidgetbase.h"
2222
#include "qgscomposermap.h"
23+
#include "qgscomposeritemwidget.h"
24+
2325
class QgsMapLayer;
2426

2527
/** \ingroup MapComposer
2628
* Input widget for the configuration of QgsComposerMap
2729
* */
28-
class QgsComposerMapWidget: public QWidget, private Ui::QgsComposerMapWidgetBase
30+
class QgsComposerMapWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerMapWidgetBase
2931
{
3032
Q_OBJECT
3133

‎src/app/composer/qgscomposerpicturewidget.cpp

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
#include <QSettings>
3333
#include <QSvgRenderer>
3434

35-
QgsComposerPictureWidget::QgsComposerPictureWidget( QgsComposerPicture* picture ): QWidget(), mPicture( picture ), mPreviewsLoaded( false )
35+
QgsComposerPictureWidget::QgsComposerPictureWidget( QgsComposerPicture* picture ): QgsComposerItemBaseWidget( 0, picture ), mPicture( picture ), mPreviewsLoaded( false )
3636
{
3737
setupUi( this );
3838

@@ -131,19 +131,10 @@ void QgsComposerPictureWidget::on_mPictureExpressionButton_clicked()
131131
return;
132132
}
133133

134-
QgsVectorLayer* vl = 0;
135-
QgsComposition* composition = mPicture->composition();
134+
// use the atlas coverage layer, if any
135+
QgsVectorLayer* coverageLayer = atlasCoverageLayer();
136136

137-
if ( composition )
138-
{
139-
QgsAtlasComposition* atlasMap = &composition->atlasComposition();
140-
if ( atlasMap )
141-
{
142-
vl = atlasMap->coverageLayer();
143-
}
144-
}
145-
146-
QgsExpressionBuilderDialog exprDlg( vl, mPictureExpressionLineEdit->text(), this );
137+
QgsExpressionBuilderDialog exprDlg( coverageLayer, mPictureExpressionLineEdit->text(), this );
147138
exprDlg.setWindowTitle( tr( "Expression based image path" ) );
148139
if ( exprDlg.exec() == QDialog::Accepted )
149140
{

‎src/app/composer/qgscomposerpicturewidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@
1919
#define QGSCOMPOSERPICTUREWIDGET_H
2020

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

2324
class QgsComposerPicture;
2425

2526
/** \ingroup MapComposer
2627
* A widget for adding an image to a map composition.
2728
*/
28-
class QgsComposerPictureWidget: public QWidget, private Ui::QgsComposerPictureWidgetBase
29+
class QgsComposerPictureWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerPictureWidgetBase
2930
{
3031
Q_OBJECT
3132

‎src/app/composer/qgscomposerscalebarwidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include <QFontDialog>
2424
#include <QWidget>
2525

26-
QgsComposerScaleBarWidget::QgsComposerScaleBarWidget( QgsComposerScaleBar* scaleBar ): QWidget(), mComposerScaleBar( scaleBar )
26+
QgsComposerScaleBarWidget::QgsComposerScaleBarWidget( QgsComposerScaleBar* scaleBar ): QgsComposerItemBaseWidget( 0, scaleBar ), mComposerScaleBar( scaleBar )
2727
{
2828
setupUi( this );
2929
connectUpdateSignal();

‎src/app/composer/qgscomposerscalebarwidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@
1818
#define QGSCOMPOSERSCALEBARWIDGET_H
1919

2020
#include "ui_qgscomposerscalebarwidgetbase.h"
21+
#include "qgscomposeritemwidget.h"
2122

2223
class QgsComposerScaleBar;
2324

2425
/** \ingroup MapComposer
2526
* A widget to define the properties of a QgsComposerScaleBarItem.
2627
*/
27-
class QgsComposerScaleBarWidget: public QWidget, private Ui::QgsComposerScaleBarWidgetBase
28+
class QgsComposerScaleBarWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerScaleBarWidgetBase
2829
{
2930
Q_OBJECT
3031

‎src/app/composer/qgscomposershapewidget.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include "qgssymbollayerv2utils.h"
2525
#include <QColorDialog>
2626

27-
QgsComposerShapeWidget::QgsComposerShapeWidget( QgsComposerShape* composerShape ): QWidget( 0 ), mComposerShape( composerShape )
27+
QgsComposerShapeWidget::QgsComposerShapeWidget( QgsComposerShape* composerShape ): QgsComposerItemBaseWidget( 0, composerShape ), mComposerShape( composerShape )
2828
{
2929
setupUi( this );
3030

@@ -104,12 +104,8 @@ void QgsComposerShapeWidget::on_mShapeStyleButton_clicked()
104104
return;
105105
}
106106

107-
QgsVectorLayer* coverageLayer = 0;
108107
// use the atlas coverage layer, if any
109-
if ( mComposerShape->composition()->atlasComposition().enabled() )
110-
{
111-
coverageLayer = mComposerShape->composition()->atlasComposition().coverageLayer();
112-
}
108+
QgsVectorLayer* coverageLayer = atlasCoverageLayer();
113109

114110
QgsFillSymbolV2* newSymbol = dynamic_cast<QgsFillSymbolV2*>( mComposerShape->shapeStyleSymbol()->clone() );
115111
QgsSymbolV2SelectorDialog d( newSymbol, QgsStyleV2::defaultStyle(), coverageLayer );

‎src/app/composer/qgscomposershapewidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@
1919
#define QGSCOMPOSERSHAPEWIDGET_H
2020

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

2324
class QgsComposerShape;
2425

2526
/**Input widget for QgsComposerShape*/
26-
class QgsComposerShapeWidget: public QWidget, private Ui::QgsComposerShapeWidgetBase
27+
class QgsComposerShapeWidget: public QgsComposerItemBaseWidget, private Ui::QgsComposerShapeWidgetBase
2728
{
2829
Q_OBJECT
2930
public:

‎src/app/composer/qgscomposertablewidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#include <QColorDialog>
2828
#include <QFontDialog>
2929

30-
QgsComposerTableWidget::QgsComposerTableWidget( QgsComposerAttributeTable* table ): QWidget( 0 ), mComposerTable( table )
30+
QgsComposerTableWidget::QgsComposerTableWidget( QgsComposerAttributeTable* table ): QgsComposerItemBaseWidget( 0, table ), mComposerTable( table )
3131
{
3232
setupUi( this );
3333
//add widget for general composer item properties

‎src/app/composer/qgscomposertablewidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
#define QGSCOMPOSERTABLEWIDGET_H
2020

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

2324
class QgsComposerAttributeTable;
2425

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

0 commit comments

Comments
 (0)
Please sign in to comment.