Skip to content

Commit

Permalink
Connect signal slots for html dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent committed Jul 26, 2012
1 parent 590929d commit 6f14d2c
Show file tree
Hide file tree
Showing 10 changed files with 238 additions and 9 deletions.
2 changes: 2 additions & 0 deletions src/app/CMakeLists.txt
Expand Up @@ -109,6 +109,7 @@ SET(QGIS_APP_SRCS
composer/qgsattributeselectiondialog.cpp
composer/qgscomposer.cpp
composer/qgscomposerarrowwidget.cpp
composer/qgscomposerhtmlwidget.cpp
composer/qgscomposeritemwidget.cpp
composer/qgscomposerlabelwidget.cpp
composer/qgscomposerpicturewidget.cpp
Expand Down Expand Up @@ -249,6 +250,7 @@ SET (QGIS_APP_MOC_HDRS
composer/qgsattributeselectiondialog.h
composer/qgscomposer.h
composer/qgscomposerarrowwidget.h
composer/qgscomposerhtmlwidget.h
composer/qgscomposeritemwidget.h
composer/qgscomposerlabelwidget.h
composer/qgscomposerlegendwidget.h
Expand Down
12 changes: 11 additions & 1 deletion src/app/composer/qgscomposer.cpp
Expand Up @@ -23,6 +23,9 @@
#include "qgscompositionwidget.h"
#include "qgscomposerarrow.h"
#include "qgscomposerarrowwidget.h"
#include "qgscomposerframe.h"
#include "qgscomposerhtml.h"
#include "qgscomposerhtmlwidget.h"
#include "qgscomposerlabel.h"
#include "qgscomposerlabelwidget.h"
#include "qgscomposerlegend.h"
Expand Down Expand Up @@ -368,6 +371,7 @@ void QgsComposer::connectSlots()

connect( mComposition, SIGNAL( selectedItemChanged( QgsComposerItem* ) ), this, SLOT( showItemOptions( QgsComposerItem* ) ) );
connect( mComposition, SIGNAL( composerArrowAdded( QgsComposerArrow* ) ), this, SLOT( addComposerArrow( QgsComposerArrow* ) ) );
connect( mComposition, SIGNAL( composerHtmlAdded( QgsComposerHtml* ) ), this, SLOT( addComposerHtml( QgsComposerHtml* ) ) );
connect( mComposition, SIGNAL( composerLabelAdded( QgsComposerLabel* ) ), this, SLOT( addComposerLabel( QgsComposerLabel* ) ) );
connect( mComposition, SIGNAL( composerMapAdded( QgsComposerMap* ) ), this, SLOT( addComposerMap( QgsComposerMap* ) ) );
connect( mComposition, SIGNAL( composerScaleBarAdded( QgsComposerScaleBar* ) ), this, SLOT( addComposerScaleBar( QgsComposerScaleBar* ) ) );
Expand Down Expand Up @@ -1344,7 +1348,13 @@ void QgsComposer::addComposerHtml( QgsComposerHtml* html )
return;
}

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

void QgsComposer::deleteItem( QgsComposerItem* item )
Expand Down
74 changes: 74 additions & 0 deletions src/app/composer/qgscomposerhtmlwidget.cpp
@@ -0,0 +1,74 @@
#include "qgscomposerhtmlwidget.h"
#include "qgscomposerhtml.h"
#include <QFileDialog>

QgsComposerHtmlWidget::QgsComposerHtmlWidget( QgsComposerHtml* html ): mHtml( html )
{
setupUi( this );
mResizeModeComboBox->addItem( tr( "Use existing frames" ), QgsComposerMultiFrame::UseExistingFrames );
mResizeModeComboBox->addItem( tr( "Extend to next page" ), QgsComposerMultiFrame::ExtendToNextPage );
}

QgsComposerHtmlWidget::QgsComposerHtmlWidget()
{
}

QgsComposerHtmlWidget::~QgsComposerHtmlWidget()
{
}

void QgsComposerHtmlWidget::blockSignals( bool block )
{
mUrlLineEdit->blockSignals( block );
mFileToolButton->blockSignals( block );
mResizeModeComboBox->blockSignals( block );
}

void QgsComposerHtmlWidget::on_mUrlLineEdit_editingFinished()
{
if ( mHtml )
{
//mHtml->beginCommand( tr( "Url changed" ) );
mHtml->setUrl( QUrl( mUrlLineEdit->text() ) );
mHtml->update();
//mHtmlItem->endCommand();
}
}

void QgsComposerHtmlWidget::on_mFileToolButton_clicked()
{
QString file = QFileDialog::getOpenFileName( this, tr( "Select HTML document" ), QString(), "HTML (*.html)" );
if ( !file.isEmpty() )
{
QUrl url = QUrl::fromLocalFile( file );
//mHtmlItem->beginCommand( tr( "Url changed" ) );
mHtml->setUrl( url );
//mHtmlItem->endCommand();
mUrlLineEdit->setText( url.toString() );
}
}

void QgsComposerHtmlWidget::on_mResizeModeComboBox_currentIndexChanged( int index )
{
if ( !mHtml )
{
return;
}

mHtml->setResizeMode(( QgsComposerMultiFrame::ResizeMode )mResizeModeComboBox->itemData( index ).toInt() );
}

void QgsComposerHtmlWidget::setGuiElementValues()
{
if ( !mHtml )
{
return;
}

blockSignals( true );
mUrlLineEdit->setText( mHtml->url().toString() );
mResizeModeComboBox->setCurrentIndex( mResizeModeComboBox->findData( mHtml->resizeMode() ) );
blockSignals( false );
}


30 changes: 30 additions & 0 deletions src/app/composer/qgscomposerhtmlwidget.h
@@ -0,0 +1,30 @@
#ifndef QGSCOMPOSERHTMLWIDGET_H
#define QGSCOMPOSERHTMLWIDGET_H

#include "ui_qgscomposerhtmlwidgetbase.h"

class QgsComposerHtml;

class QgsComposerHtmlWidget: public QWidget, private Ui::QgsComposerHtmlWidgetBase
{
Q_OBJECT
public:
QgsComposerHtmlWidget( QgsComposerHtml* html );
~QgsComposerHtmlWidget();

private slots:
void on_mUrlLineEdit_editingFinished();
void on_mFileToolButton_clicked();
void on_mResizeModeComboBox_currentIndexChanged( int index );

/**Sets the GUI elements to the values of mHtmlItem*/
void setGuiElementValues();

private:
QgsComposerHtmlWidget();
void blockSignals( bool block );

QgsComposerHtml* mHtml;
};

#endif // QGSCOMPOSERHTMLWIDGET_H
3 changes: 1 addition & 2 deletions src/core/composer/qgscomposerhtml.cpp
Expand Up @@ -27,7 +27,7 @@ QgsComposerHtml::QgsComposerHtml( QgsComposition* c, qreal x, qreal y, qreal wid
mHtmlUnitsToMM = htmlUnitsToMM();
mWebPage = new QWebPage();
QObject::connect( mWebPage, SIGNAL( loadFinished( bool ) ), this, SLOT( frameLoaded( bool ) ) );
setUrl( QUrl( "http://www.qgis.org" ) );//test
//setUrl( QUrl( "http://www.qgis.org" ) );//test
QgsComposerFrame* frame = new QgsComposerFrame( c, this, x, y, width, height );
addFrame( frame );
recalculateFrameSizes();
Expand Down Expand Up @@ -94,7 +94,6 @@ double QgsComposerHtml::htmlUnitsToMM()
}

QImage img( 1, 1, QImage::Format_ARGB32_Premultiplied );
double debug = img.dotsPerMeterX();
double pixelPerMM = mComposition->printResolution() / 25.4;
return ( pixelPerMM / ( img.dotsPerMeterX() / 1000.0 ) );
}
29 changes: 24 additions & 5 deletions src/core/composer/qgscomposermultiframe.cpp
Expand Up @@ -19,7 +19,7 @@
QgsComposerMultiFrame::QgsComposerMultiFrame( QgsComposition* c ): mComposition( c ), mResizeMode( UseExistingFrames )
{
//debug
mResizeMode = ExtendToNextPage;
//mResizeMode = ExtendToNextPage;
}

QgsComposerMultiFrame::QgsComposerMultiFrame(): mComposition( 0 ), mResizeMode( UseExistingFrames )
Expand All @@ -30,6 +30,15 @@ QgsComposerMultiFrame::~QgsComposerMultiFrame()
{
}

void QgsComposerMultiFrame::setResizeMode( ResizeMode mode )
{
if ( mode != mResizeMode )
{
mResizeMode = mode;
recalculateFrameSizes();
}
}

void QgsComposerMultiFrame::recalculateFrameSizes()
{
if ( mFrameItems.size() < 1 )
Expand Down Expand Up @@ -94,10 +103,10 @@ void QgsComposerMultiFrame::addFrame( QgsComposerFrame* frame )
mFrameItems.push_back( frame );
QObject::connect( frame, SIGNAL( sizeChanged() ), this, SLOT( recalculateFrameSizes() ) );
// QObject::connect( frame, SIGNAL( destroyed( QObject* ) ), this, SLOT( removeFrame( QObject* ) ) );
if ( mComposition )
{
mComposition->addItem( frame );
}
/* if ( mComposition )
{
mComposition->addItem( frame );
}*/
}

void QgsComposerMultiFrame::removeFrame( int i )
Expand All @@ -120,3 +129,13 @@ void QgsComposerMultiFrame::removeFrame( QObject* frame )
recalculateFrameSizes();
}
}*/


void QgsComposerMultiFrame::update()
{
QList<QgsComposerFrame*>::iterator frameIt = mFrameItems.begin();
for ( ; frameIt != mFrameItems.end(); ++frameIt )
{
( *frameIt )->update();
}
}
6 changes: 5 additions & 1 deletion src/core/composer/qgscomposermultiframe.h
Expand Up @@ -44,9 +44,13 @@ class QgsComposerMultiFrame: public QObject
void addFrame( QgsComposerFrame* frame );
void removeFrame( int i );

void setResizeMode( ResizeMode mode ) { mResizeMode = mode; }
void update();

void setResizeMode( ResizeMode mode );
ResizeMode resizeMode() const { return mResizeMode; }

QList<QgsComposerFrame*> frameItems() { return mFrameItems; }

protected:
QgsComposition* mComposition;
QList<QgsComposerFrame*> mFrameItems;
Expand Down
20 changes: 20 additions & 0 deletions src/core/composer/qgscomposition.cpp
Expand Up @@ -17,6 +17,8 @@
#include "qgscomposition.h"
#include "qgscomposeritem.h"
#include "qgscomposerarrow.h"
#include "qgscomposerframe.h"
#include "qgscomposerhtml.h"
#include "qgscomposerlabel.h"
#include "qgscomposerlegend.h"
#include "qgscomposermap.h"
Expand Down Expand Up @@ -1098,8 +1100,26 @@ void QgsComposition::addComposerTable( QgsComposerAttributeTable* table )

void QgsComposition::addComposerHtml( QgsComposerHtml* html )
{
QList<QgsComposerFrame*> htmlFrames = html->frameItems();
if ( htmlFrames.size() < 1 )
{
return;
}

QList<QgsComposerFrame*>::iterator frameIt = htmlFrames.begin();
for ( ; frameIt != htmlFrames.end(); ++frameIt )
{
addItem( *frameIt );
}
emit composerHtmlAdded( html );
clearSelection();

QgsComposerFrame* firstItem = htmlFrames[0];
if ( firstItem )
{
firstItem->setSelected( true );
emit selectedItemChanged( firstItem );
}
}

void QgsComposition::removeComposerItem( QgsComposerItem* item )
Expand Down
1 change: 1 addition & 0 deletions src/gui/qgscomposerview.cpp
Expand Up @@ -324,6 +324,7 @@ void QgsComposerView::mouseReleaseEvent( QMouseEvent* e )
{
QgsComposerHtml* composerHtml = new QgsComposerHtml( composition(), mRubberBandItem->transform().dx(), mRubberBandItem->transform().dy(),
mRubberBandItem->rect().width(), mRubberBandItem->rect().height() );
composition()->addComposerHtml( composerHtml );
scene()->removeItem( mRubberBandItem );
delete mRubberBandItem;
mRubberBandItem = 0;
Expand Down
70 changes: 70 additions & 0 deletions src/ui/qgscomposerhtmlwidgetbase.ui
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QgsComposerHtmlWidgetBase</class>
<widget class="QWidget" name="QgsComposerHtmlWidgetBase">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>243</width>
<height>116</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QToolBox" name="mToolBox">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="page">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>225</width>
<height>72</height>
</rect>
</property>
<attribute name="label">
<string>HTML</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="2">
<widget class="QToolButton" name="mFileToolButton">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="mUrlLineEdit"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mUrlLabel">
<property name="text">
<string>URL</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="mResizeModeLabel">
<property name="text">
<string>Resize mode</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="mResizeModeComboBox"/>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

0 comments on commit 6f14d2c

Please sign in to comment.