Refactored how preview keeps up with model changes.
This commit is contained in:
@@ -86,6 +86,7 @@ set (glabels_qobject_headers
|
||||
MainWindow.h
|
||||
MergeView.h
|
||||
ObjectEditor.h
|
||||
PageRenderer.h
|
||||
PreferencesDialog.h
|
||||
PrintView.h
|
||||
PropertiesView.h
|
||||
|
||||
@@ -104,6 +104,8 @@ void LabelModel::restore( const LabelModel *savedModel )
|
||||
emit nameChanged();
|
||||
emit sizeChanged();
|
||||
emit mergeChanged();
|
||||
emit mergeSourceChanged();
|
||||
emit mergeSelectionChanged();
|
||||
}
|
||||
|
||||
|
||||
@@ -293,9 +295,11 @@ void LabelModel::setMerge( merge::Merge* merge )
|
||||
mMerge = merge;
|
||||
|
||||
connect( mMerge, SIGNAL(sourceChanged()), this, SLOT(onMergeSourceChanged()) );
|
||||
connect( mMerge, SIGNAL(selectionChanged()), this, SLOT(onMergeSelectionChanged()) );
|
||||
|
||||
setModified();
|
||||
|
||||
emit changed();
|
||||
emit mergeChanged();
|
||||
emit mergeSourceChanged();
|
||||
}
|
||||
@@ -431,6 +435,16 @@ void LabelModel::onMergeSourceChanged()
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Merge Selection Changed Slot
|
||||
///
|
||||
void LabelModel::onMergeSelectionChanged()
|
||||
{
|
||||
emit changed();
|
||||
emit mergeSelectionChanged();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Select Object
|
||||
///
|
||||
|
||||
@@ -75,6 +75,7 @@ signals:
|
||||
void modifiedChanged();
|
||||
void mergeChanged();
|
||||
void mergeSourceChanged();
|
||||
void mergeSelectionChanged();
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
@@ -211,6 +212,7 @@ private slots:
|
||||
void onObjectChanged();
|
||||
void onObjectMoved();
|
||||
void onMergeSourceChanged();
|
||||
void onMergeSelectionChanged();
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
|
||||
@@ -49,11 +49,28 @@ PageRenderer::PageRenderer()
|
||||
void PageRenderer::setModel( const LabelModel* model )
|
||||
{
|
||||
mModel = model;
|
||||
|
||||
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
|
||||
|
||||
onModelChanged();
|
||||
}
|
||||
|
||||
|
||||
const LabelModel* PageRenderer::model() const
|
||||
{
|
||||
return mModel;
|
||||
}
|
||||
|
||||
|
||||
void PageRenderer::onModelChanged()
|
||||
{
|
||||
mMerge = mModel->merge();
|
||||
mOrigins = mModel->frame()->getOrigins();
|
||||
mNLabelsPerPage = mModel->frame()->nLabels();
|
||||
mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == 0 );
|
||||
updateNPages();
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +78,8 @@ void PageRenderer::setNCopies( int nCopies )
|
||||
{
|
||||
mNCopies = nCopies;
|
||||
updateNPages();
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
@@ -68,30 +87,40 @@ void PageRenderer::setStartLabel( int startLabel )
|
||||
{
|
||||
mStartLabel = startLabel;
|
||||
updateNPages();
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
void PageRenderer::setPrintOutlines( bool printOutlinesFlag )
|
||||
{
|
||||
mPrintOutlines = printOutlinesFlag;
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
void PageRenderer::setPrintCropMarks( bool printCropMarksFlag )
|
||||
{
|
||||
mPrintCropMarks = printCropMarksFlag;
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
void PageRenderer::setPrintReverse( bool printReverseFlag )
|
||||
{
|
||||
mPrintReverse = printReverseFlag;
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
void PageRenderer::setIPage( int iPage )
|
||||
{
|
||||
mIPage = iPage;
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
|
||||
@@ -213,6 +242,7 @@ void PageRenderer::printSimplePage( QPainter* painter, int iPage ) const
|
||||
|
||||
void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
|
||||
{
|
||||
int iRecord = 0;
|
||||
int iStart = 0;
|
||||
int iEnd = mNLabelsPerPage;
|
||||
|
||||
@@ -227,7 +257,10 @@ void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
|
||||
}
|
||||
|
||||
const QList<merge::Record*> records = mMerge->selectedRecords();
|
||||
int iRecord = (iPage*mNLabelsPerPage + iStart - mStartLabel) % records.size();
|
||||
if ( records.size() )
|
||||
{
|
||||
iRecord = (iPage*mNLabelsPerPage + iStart - mStartLabel) % records.size();
|
||||
}
|
||||
|
||||
printCropMarks( painter );
|
||||
|
||||
|
||||
+18
-1
@@ -38,8 +38,10 @@ class LabelModel;
|
||||
///
|
||||
/// PageRenderer Widget
|
||||
///
|
||||
class PageRenderer
|
||||
class PageRenderer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
/////////////////////////////////
|
||||
// Life Cycle
|
||||
/////////////////////////////////
|
||||
@@ -52,6 +54,7 @@ public:
|
||||
/////////////////////////////////
|
||||
public:
|
||||
void setModel( const LabelModel* model );
|
||||
const LabelModel* model() const;
|
||||
void setNCopies( int nCopies );
|
||||
void setStartLabel( int startLabel );
|
||||
void setPrintOutlines( bool printOutlinesFlag );
|
||||
@@ -65,6 +68,20 @@ public:
|
||||
void printPage( QPainter* painter, int iPage ) const;
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
// Signals
|
||||
/////////////////////////////////
|
||||
signals:
|
||||
void changed();
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
// Private slots
|
||||
/////////////////////////////////
|
||||
private slots:
|
||||
void onModelChanged();
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
// Internal Methods
|
||||
/////////////////////////////////
|
||||
|
||||
+15
-12
@@ -65,11 +65,23 @@ Preview::Preview( QWidget *parent )
|
||||
|
||||
|
||||
///
|
||||
/// Set model
|
||||
/// Set renderer
|
||||
///
|
||||
void Preview::setModel( const LabelModel* model )
|
||||
void Preview::setRenderer( const PageRenderer* renderer )
|
||||
{
|
||||
mModel = model;
|
||||
mRenderer = renderer;
|
||||
|
||||
connect( mRenderer, SIGNAL(changed()), this, SLOT(onRendererChanged()) );
|
||||
onRendererChanged();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Renderer changed handler
|
||||
///
|
||||
void Preview::onRendererChanged()
|
||||
{
|
||||
mModel = mRenderer->model();
|
||||
|
||||
clearScene();
|
||||
|
||||
@@ -91,15 +103,6 @@ void Preview::setModel( const LabelModel* model )
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Set renderer
|
||||
///
|
||||
void Preview::setRenderer( const PageRenderer* renderer )
|
||||
{
|
||||
mRenderer = renderer;
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Resize Event Handler
|
||||
///
|
||||
|
||||
+3
-2
@@ -46,11 +46,12 @@ public:
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
// Properties
|
||||
// Renderer
|
||||
/////////////////////////////////
|
||||
public:
|
||||
void setModel( const LabelModel* model );
|
||||
void setRenderer( const PageRenderer* renderer );
|
||||
private slots:
|
||||
void onRendererChanged();
|
||||
|
||||
|
||||
/////////////////////////////////////
|
||||
|
||||
+15
-18
@@ -54,33 +54,35 @@ PrintView::~PrintView()
|
||||
void PrintView::setModel( LabelModel* model )
|
||||
{
|
||||
mModel = model;
|
||||
mRenderer.setModel( mModel );
|
||||
|
||||
connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) );
|
||||
connect( mModel, SIGNAL(changed()), this, SLOT(onLabelChanged()) );
|
||||
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
|
||||
|
||||
onLabelSizeChanged();
|
||||
onFormChanged();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Label size changed handler
|
||||
/// Model changed handler
|
||||
///
|
||||
void PrintView::onLabelSizeChanged()
|
||||
void PrintView::onModelChanged()
|
||||
{
|
||||
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() );
|
||||
|
||||
preview->setModel( mModel );
|
||||
mRenderer.setModel( mModel );
|
||||
updateView();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// Label changed handler
|
||||
/// Update view
|
||||
///
|
||||
void PrintView::onLabelChanged()
|
||||
void PrintView::updateView()
|
||||
{
|
||||
preview->update();
|
||||
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() );
|
||||
|
||||
copiesDescriptionLabel->setText( tr("(Will print a total of %1 items on %2 pages.)")
|
||||
.arg(mRenderer.nItems()).arg(mRenderer.nPages()) );
|
||||
|
||||
pageSpin->setRange( 1, mRenderer.nPages() );
|
||||
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -95,19 +97,14 @@ void PrintView::onFormChanged()
|
||||
|
||||
mRenderer.setNCopies( copiesSpin->value() );
|
||||
mRenderer.setStartLabel( copiesStartSpin->value() - 1 );
|
||||
copiesDescriptionLabel->setText( tr("(Will print a total of %1 items on %2 pages.)")
|
||||
.arg(mRenderer.nItems()).arg(mRenderer.nPages()) );
|
||||
|
||||
mRenderer.setPrintOutlines( printOutlinesCheck->isChecked() );
|
||||
mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() );
|
||||
mRenderer.setPrintReverse( printReverseCheck->isChecked() );
|
||||
|
||||
pageSpin->setRange( 1, mRenderer.nPages() );
|
||||
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
|
||||
|
||||
mRenderer.setIPage( pageSpin->value() - 1 );
|
||||
|
||||
preview->update();
|
||||
updateView();
|
||||
|
||||
mBlocked = false;
|
||||
}
|
||||
|
||||
+2
-2
@@ -56,8 +56,8 @@ public:
|
||||
// Slots
|
||||
/////////////////////////////////
|
||||
private slots:
|
||||
void onLabelChanged();
|
||||
void onLabelSizeChanged();
|
||||
void onModelChanged();
|
||||
void updateView();
|
||||
void onFormChanged();
|
||||
void onPrintButtonClicked();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user