Skip to content

Commit 6f14d2c

Browse files
committedJul 26, 2012
Connect signal slots for html dialog
1 parent 590929d commit 6f14d2c

10 files changed

+238
-9
lines changed
 

‎src/app/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ SET(QGIS_APP_SRCS
109109
composer/qgsattributeselectiondialog.cpp
110110
composer/qgscomposer.cpp
111111
composer/qgscomposerarrowwidget.cpp
112+
composer/qgscomposerhtmlwidget.cpp
112113
composer/qgscomposeritemwidget.cpp
113114
composer/qgscomposerlabelwidget.cpp
114115
composer/qgscomposerpicturewidget.cpp
@@ -249,6 +250,7 @@ SET (QGIS_APP_MOC_HDRS
249250
composer/qgsattributeselectiondialog.h
250251
composer/qgscomposer.h
251252
composer/qgscomposerarrowwidget.h
253+
composer/qgscomposerhtmlwidget.h
252254
composer/qgscomposeritemwidget.h
253255
composer/qgscomposerlabelwidget.h
254256
composer/qgscomposerlegendwidget.h

‎src/app/composer/qgscomposer.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
#include "qgscompositionwidget.h"
2424
#include "qgscomposerarrow.h"
2525
#include "qgscomposerarrowwidget.h"
26+
#include "qgscomposerframe.h"
27+
#include "qgscomposerhtml.h"
28+
#include "qgscomposerhtmlwidget.h"
2629
#include "qgscomposerlabel.h"
2730
#include "qgscomposerlabelwidget.h"
2831
#include "qgscomposerlegend.h"
@@ -368,6 +371,7 @@ void QgsComposer::connectSlots()
368371

369372
connect( mComposition, SIGNAL( selectedItemChanged( QgsComposerItem* ) ), this, SLOT( showItemOptions( QgsComposerItem* ) ) );
370373
connect( mComposition, SIGNAL( composerArrowAdded( QgsComposerArrow* ) ), this, SLOT( addComposerArrow( QgsComposerArrow* ) ) );
374+
connect( mComposition, SIGNAL( composerHtmlAdded( QgsComposerHtml* ) ), this, SLOT( addComposerHtml( QgsComposerHtml* ) ) );
371375
connect( mComposition, SIGNAL( composerLabelAdded( QgsComposerLabel* ) ), this, SLOT( addComposerLabel( QgsComposerLabel* ) ) );
372376
connect( mComposition, SIGNAL( composerMapAdded( QgsComposerMap* ) ), this, SLOT( addComposerMap( QgsComposerMap* ) ) );
373377
connect( mComposition, SIGNAL( composerScaleBarAdded( QgsComposerScaleBar* ) ), this, SLOT( addComposerScaleBar( QgsComposerScaleBar* ) ) );
@@ -1344,7 +1348,13 @@ void QgsComposer::addComposerHtml( QgsComposerHtml* html )
13441348
return;
13451349
}
13461350

1347-
//todo: create html widget and create entry for each frame in the item/widget map
1351+
QgsComposerHtmlWidget* hWidget = new QgsComposerHtmlWidget( html );
1352+
QList<QgsComposerFrame*> frameList = html->frameItems();
1353+
QList<QgsComposerFrame*>::iterator frameIt = frameList.begin();
1354+
for ( ; frameIt != frameList.end(); ++frameIt )
1355+
{
1356+
mItemWidgetMap.insert( *frameIt, hWidget );
1357+
}
13481358
}
13491359

13501360
void QgsComposer::deleteItem( QgsComposerItem* item )
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#include "qgscomposerhtmlwidget.h"
2+
#include "qgscomposerhtml.h"
3+
#include <QFileDialog>
4+
5+
QgsComposerHtmlWidget::QgsComposerHtmlWidget( QgsComposerHtml* html ): mHtml( html )
6+
{
7+
setupUi( this );
8+
mResizeModeComboBox->addItem( tr( "Use existing frames" ), QgsComposerMultiFrame::UseExistingFrames );
9+
mResizeModeComboBox->addItem( tr( "Extend to next page" ), QgsComposerMultiFrame::ExtendToNextPage );
10+
}
11+
12+
QgsComposerHtmlWidget::QgsComposerHtmlWidget()
13+
{
14+
}
15+
16+
QgsComposerHtmlWidget::~QgsComposerHtmlWidget()
17+
{
18+
}
19+
20+
void QgsComposerHtmlWidget::blockSignals( bool block )
21+
{
22+
mUrlLineEdit->blockSignals( block );
23+
mFileToolButton->blockSignals( block );
24+
mResizeModeComboBox->blockSignals( block );
25+
}
26+
27+
void QgsComposerHtmlWidget::on_mUrlLineEdit_editingFinished()
28+
{
29+
if ( mHtml )
30+
{
31+
//mHtml->beginCommand( tr( "Url changed" ) );
32+
mHtml->setUrl( QUrl( mUrlLineEdit->text() ) );
33+
mHtml->update();
34+
//mHtmlItem->endCommand();
35+
}
36+
}
37+
38+
void QgsComposerHtmlWidget::on_mFileToolButton_clicked()
39+
{
40+
QString file = QFileDialog::getOpenFileName( this, tr( "Select HTML document" ), QString(), "HTML (*.html)" );
41+
if ( !file.isEmpty() )
42+
{
43+
QUrl url = QUrl::fromLocalFile( file );
44+
//mHtmlItem->beginCommand( tr( "Url changed" ) );
45+
mHtml->setUrl( url );
46+
//mHtmlItem->endCommand();
47+
mUrlLineEdit->setText( url.toString() );
48+
}
49+
}
50+
51+
void QgsComposerHtmlWidget::on_mResizeModeComboBox_currentIndexChanged( int index )
52+
{
53+
if ( !mHtml )
54+
{
55+
return;
56+
}
57+
58+
mHtml->setResizeMode(( QgsComposerMultiFrame::ResizeMode )mResizeModeComboBox->itemData( index ).toInt() );
59+
}
60+
61+
void QgsComposerHtmlWidget::setGuiElementValues()
62+
{
63+
if ( !mHtml )
64+
{
65+
return;
66+
}
67+
68+
blockSignals( true );
69+
mUrlLineEdit->setText( mHtml->url().toString() );
70+
mResizeModeComboBox->setCurrentIndex( mResizeModeComboBox->findData( mHtml->resizeMode() ) );
71+
blockSignals( false );
72+
}
73+
74+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#ifndef QGSCOMPOSERHTMLWIDGET_H
2+
#define QGSCOMPOSERHTMLWIDGET_H
3+
4+
#include "ui_qgscomposerhtmlwidgetbase.h"
5+
6+
class QgsComposerHtml;
7+
8+
class QgsComposerHtmlWidget: public QWidget, private Ui::QgsComposerHtmlWidgetBase
9+
{
10+
Q_OBJECT
11+
public:
12+
QgsComposerHtmlWidget( QgsComposerHtml* html );
13+
~QgsComposerHtmlWidget();
14+
15+
private slots:
16+
void on_mUrlLineEdit_editingFinished();
17+
void on_mFileToolButton_clicked();
18+
void on_mResizeModeComboBox_currentIndexChanged( int index );
19+
20+
/**Sets the GUI elements to the values of mHtmlItem*/
21+
void setGuiElementValues();
22+
23+
private:
24+
QgsComposerHtmlWidget();
25+
void blockSignals( bool block );
26+
27+
QgsComposerHtml* mHtml;
28+
};
29+
30+
#endif // QGSCOMPOSERHTMLWIDGET_H

‎src/core/composer/qgscomposerhtml.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ QgsComposerHtml::QgsComposerHtml( QgsComposition* c, qreal x, qreal y, qreal wid
2727
mHtmlUnitsToMM = htmlUnitsToMM();
2828
mWebPage = new QWebPage();
2929
QObject::connect( mWebPage, SIGNAL( loadFinished( bool ) ), this, SLOT( frameLoaded( bool ) ) );
30-
setUrl( QUrl( "http://www.qgis.org" ) );//test
30+
//setUrl( QUrl( "http://www.qgis.org" ) );//test
3131
QgsComposerFrame* frame = new QgsComposerFrame( c, this, x, y, width, height );
3232
addFrame( frame );
3333
recalculateFrameSizes();
@@ -94,7 +94,6 @@ double QgsComposerHtml::htmlUnitsToMM()
9494
}
9595

9696
QImage img( 1, 1, QImage::Format_ARGB32_Premultiplied );
97-
double debug = img.dotsPerMeterX();
9897
double pixelPerMM = mComposition->printResolution() / 25.4;
9998
return ( pixelPerMM / ( img.dotsPerMeterX() / 1000.0 ) );
10099
}

‎src/core/composer/qgscomposermultiframe.cpp

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
QgsComposerMultiFrame::QgsComposerMultiFrame( QgsComposition* c ): mComposition( c ), mResizeMode( UseExistingFrames )
2020
{
2121
//debug
22-
mResizeMode = ExtendToNextPage;
22+
//mResizeMode = ExtendToNextPage;
2323
}
2424

2525
QgsComposerMultiFrame::QgsComposerMultiFrame(): mComposition( 0 ), mResizeMode( UseExistingFrames )
@@ -30,6 +30,15 @@ QgsComposerMultiFrame::~QgsComposerMultiFrame()
3030
{
3131
}
3232

33+
void QgsComposerMultiFrame::setResizeMode( ResizeMode mode )
34+
{
35+
if ( mode != mResizeMode )
36+
{
37+
mResizeMode = mode;
38+
recalculateFrameSizes();
39+
}
40+
}
41+
3342
void QgsComposerMultiFrame::recalculateFrameSizes()
3443
{
3544
if ( mFrameItems.size() < 1 )
@@ -94,10 +103,10 @@ void QgsComposerMultiFrame::addFrame( QgsComposerFrame* frame )
94103
mFrameItems.push_back( frame );
95104
QObject::connect( frame, SIGNAL( sizeChanged() ), this, SLOT( recalculateFrameSizes() ) );
96105
// QObject::connect( frame, SIGNAL( destroyed( QObject* ) ), this, SLOT( removeFrame( QObject* ) ) );
97-
if ( mComposition )
98-
{
99-
mComposition->addItem( frame );
100-
}
106+
/* if ( mComposition )
107+
{
108+
mComposition->addItem( frame );
109+
}*/
101110
}
102111

103112
void QgsComposerMultiFrame::removeFrame( int i )
@@ -120,3 +129,13 @@ void QgsComposerMultiFrame::removeFrame( QObject* frame )
120129
recalculateFrameSizes();
121130
}
122131
}*/
132+
133+
134+
void QgsComposerMultiFrame::update()
135+
{
136+
QList<QgsComposerFrame*>::iterator frameIt = mFrameItems.begin();
137+
for ( ; frameIt != mFrameItems.end(); ++frameIt )
138+
{
139+
( *frameIt )->update();
140+
}
141+
}

‎src/core/composer/qgscomposermultiframe.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ class QgsComposerMultiFrame: public QObject
4444
void addFrame( QgsComposerFrame* frame );
4545
void removeFrame( int i );
4646

47-
void setResizeMode( ResizeMode mode ) { mResizeMode = mode; }
47+
void update();
48+
49+
void setResizeMode( ResizeMode mode );
4850
ResizeMode resizeMode() const { return mResizeMode; }
4951

52+
QList<QgsComposerFrame*> frameItems() { return mFrameItems; }
53+
5054
protected:
5155
QgsComposition* mComposition;
5256
QList<QgsComposerFrame*> mFrameItems;

‎src/core/composer/qgscomposition.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
#include "qgscomposition.h"
1818
#include "qgscomposeritem.h"
1919
#include "qgscomposerarrow.h"
20+
#include "qgscomposerframe.h"
21+
#include "qgscomposerhtml.h"
2022
#include "qgscomposerlabel.h"
2123
#include "qgscomposerlegend.h"
2224
#include "qgscomposermap.h"
@@ -1098,8 +1100,26 @@ void QgsComposition::addComposerTable( QgsComposerAttributeTable* table )
10981100

10991101
void QgsComposition::addComposerHtml( QgsComposerHtml* html )
11001102
{
1103+
QList<QgsComposerFrame*> htmlFrames = html->frameItems();
1104+
if ( htmlFrames.size() < 1 )
1105+
{
1106+
return;
1107+
}
1108+
1109+
QList<QgsComposerFrame*>::iterator frameIt = htmlFrames.begin();
1110+
for ( ; frameIt != htmlFrames.end(); ++frameIt )
1111+
{
1112+
addItem( *frameIt );
1113+
}
11011114
emit composerHtmlAdded( html );
11021115
clearSelection();
1116+
1117+
QgsComposerFrame* firstItem = htmlFrames[0];
1118+
if ( firstItem )
1119+
{
1120+
firstItem->setSelected( true );
1121+
emit selectedItemChanged( firstItem );
1122+
}
11031123
}
11041124

11051125
void QgsComposition::removeComposerItem( QgsComposerItem* item )

‎src/gui/qgscomposerview.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ void QgsComposerView::mouseReleaseEvent( QMouseEvent* e )
324324
{
325325
QgsComposerHtml* composerHtml = new QgsComposerHtml( composition(), mRubberBandItem->transform().dx(), mRubberBandItem->transform().dy(),
326326
mRubberBandItem->rect().width(), mRubberBandItem->rect().height() );
327+
composition()->addComposerHtml( composerHtml );
327328
scene()->removeItem( mRubberBandItem );
328329
delete mRubberBandItem;
329330
mRubberBandItem = 0;

‎src/ui/qgscomposerhtmlwidgetbase.ui

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>QgsComposerHtmlWidgetBase</class>
4+
<widget class="QWidget" name="QgsComposerHtmlWidgetBase">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>243</width>
10+
<height>116</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Form</string>
15+
</property>
16+
<layout class="QGridLayout" name="gridLayout_2">
17+
<item row="0" column="0">
18+
<widget class="QToolBox" name="mToolBox">
19+
<property name="currentIndex">
20+
<number>0</number>
21+
</property>
22+
<widget class="QWidget" name="page">
23+
<property name="geometry">
24+
<rect>
25+
<x>0</x>
26+
<y>0</y>
27+
<width>225</width>
28+
<height>72</height>
29+
</rect>
30+
</property>
31+
<attribute name="label">
32+
<string>HTML</string>
33+
</attribute>
34+
<layout class="QGridLayout" name="gridLayout">
35+
<item row="1" column="2">
36+
<widget class="QToolButton" name="mFileToolButton">
37+
<property name="text">
38+
<string>...</string>
39+
</property>
40+
</widget>
41+
</item>
42+
<item row="1" column="1">
43+
<widget class="QLineEdit" name="mUrlLineEdit"/>
44+
</item>
45+
<item row="1" column="0">
46+
<widget class="QLabel" name="mUrlLabel">
47+
<property name="text">
48+
<string>URL</string>
49+
</property>
50+
</widget>
51+
</item>
52+
<item row="0" column="0">
53+
<widget class="QLabel" name="mResizeModeLabel">
54+
<property name="text">
55+
<string>Resize mode</string>
56+
</property>
57+
</widget>
58+
</item>
59+
<item row="0" column="1" colspan="2">
60+
<widget class="QComboBox" name="mResizeModeComboBox"/>
61+
</item>
62+
</layout>
63+
</widget>
64+
</widget>
65+
</item>
66+
</layout>
67+
</widget>
68+
<resources/>
69+
<connections/>
70+
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.