Refactored how preview keeps up with model changes.

This commit is contained in:
Jim Evins
2016-05-29 22:35:17 -04:00
parent f447aed034
commit cabb71db70
9 changed files with 107 additions and 39 deletions
+1
View File
@@ -86,6 +86,7 @@ set (glabels_qobject_headers
MainWindow.h MainWindow.h
MergeView.h MergeView.h
ObjectEditor.h ObjectEditor.h
PageRenderer.h
PreferencesDialog.h PreferencesDialog.h
PrintView.h PrintView.h
PropertiesView.h PropertiesView.h
+14
View File
@@ -104,6 +104,8 @@ void LabelModel::restore( const LabelModel *savedModel )
emit nameChanged(); emit nameChanged();
emit sizeChanged(); emit sizeChanged();
emit mergeChanged(); emit mergeChanged();
emit mergeSourceChanged();
emit mergeSelectionChanged();
} }
@@ -293,9 +295,11 @@ void LabelModel::setMerge( merge::Merge* merge )
mMerge = merge; mMerge = merge;
connect( mMerge, SIGNAL(sourceChanged()), this, SLOT(onMergeSourceChanged()) ); connect( mMerge, SIGNAL(sourceChanged()), this, SLOT(onMergeSourceChanged()) );
connect( mMerge, SIGNAL(selectionChanged()), this, SLOT(onMergeSelectionChanged()) );
setModified(); setModified();
emit changed();
emit mergeChanged(); emit mergeChanged();
emit mergeSourceChanged(); emit mergeSourceChanged();
} }
@@ -431,6 +435,16 @@ void LabelModel::onMergeSourceChanged()
} }
///
/// Merge Selection Changed Slot
///
void LabelModel::onMergeSelectionChanged()
{
emit changed();
emit mergeSelectionChanged();
}
/// ///
/// Select Object /// Select Object
/// ///
+2
View File
@@ -75,6 +75,7 @@ signals:
void modifiedChanged(); void modifiedChanged();
void mergeChanged(); void mergeChanged();
void mergeSourceChanged(); void mergeSourceChanged();
void mergeSelectionChanged();
///////////////////////////////// /////////////////////////////////
@@ -211,6 +212,7 @@ private slots:
void onObjectChanged(); void onObjectChanged();
void onObjectMoved(); void onObjectMoved();
void onMergeSourceChanged(); void onMergeSourceChanged();
void onMergeSelectionChanged();
///////////////////////////////// /////////////////////////////////
+36 -3
View File
@@ -49,49 +49,78 @@ PageRenderer::PageRenderer()
void PageRenderer::setModel( const LabelModel* model ) void PageRenderer::setModel( const LabelModel* model )
{ {
mModel = model; mModel = model;
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
onModelChanged();
}
const LabelModel* PageRenderer::model() const
{
return mModel;
}
void PageRenderer::onModelChanged()
{
mMerge = mModel->merge(); mMerge = mModel->merge();
mOrigins = mModel->frame()->getOrigins(); mOrigins = mModel->frame()->getOrigins();
mNLabelsPerPage = mModel->frame()->nLabels(); mNLabelsPerPage = mModel->frame()->nLabels();
mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == 0 ); mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == 0 );
updateNPages(); updateNPages();
emit changed();
} }
void PageRenderer::setNCopies( int nCopies ) void PageRenderer::setNCopies( int nCopies )
{ {
mNCopies = nCopies; mNCopies = nCopies;
updateNPages(); updateNPages();
emit changed();
} }
void PageRenderer::setStartLabel( int startLabel ) void PageRenderer::setStartLabel( int startLabel )
{ {
mStartLabel = startLabel; mStartLabel = startLabel;
updateNPages(); updateNPages();
emit changed();
} }
void PageRenderer::setPrintOutlines( bool printOutlinesFlag ) void PageRenderer::setPrintOutlines( bool printOutlinesFlag )
{ {
mPrintOutlines = printOutlinesFlag; mPrintOutlines = printOutlinesFlag;
emit changed();
} }
void PageRenderer::setPrintCropMarks( bool printCropMarksFlag ) void PageRenderer::setPrintCropMarks( bool printCropMarksFlag )
{ {
mPrintCropMarks = printCropMarksFlag; mPrintCropMarks = printCropMarksFlag;
emit changed();
} }
void PageRenderer::setPrintReverse( bool printReverseFlag ) void PageRenderer::setPrintReverse( bool printReverseFlag )
{ {
mPrintReverse = printReverseFlag; mPrintReverse = printReverseFlag;
emit changed();
} }
void PageRenderer::setIPage( int iPage ) void PageRenderer::setIPage( int iPage )
{ {
mIPage = 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 void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
{ {
int iRecord = 0;
int iStart = 0; int iStart = 0;
int iEnd = mNLabelsPerPage; int iEnd = mNLabelsPerPage;
@@ -227,7 +257,10 @@ void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
} }
const QList<merge::Record*> records = mMerge->selectedRecords(); 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 ); printCropMarks( painter );
+18 -1
View File
@@ -38,8 +38,10 @@ class LabelModel;
/// ///
/// PageRenderer Widget /// PageRenderer Widget
/// ///
class PageRenderer class PageRenderer : public QObject
{ {
Q_OBJECT
///////////////////////////////// /////////////////////////////////
// Life Cycle // Life Cycle
///////////////////////////////// /////////////////////////////////
@@ -52,6 +54,7 @@ public:
///////////////////////////////// /////////////////////////////////
public: public:
void setModel( const LabelModel* model ); void setModel( const LabelModel* model );
const LabelModel* model() const;
void setNCopies( int nCopies ); void setNCopies( int nCopies );
void setStartLabel( int startLabel ); void setStartLabel( int startLabel );
void setPrintOutlines( bool printOutlinesFlag ); void setPrintOutlines( bool printOutlinesFlag );
@@ -65,6 +68,20 @@ public:
void printPage( QPainter* painter, int iPage ) const; void printPage( QPainter* painter, int iPage ) const;
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void changed();
/////////////////////////////////
// Private slots
/////////////////////////////////
private slots:
void onModelChanged();
///////////////////////////////// /////////////////////////////////
// Internal Methods // Internal Methods
///////////////////////////////// /////////////////////////////////
+15 -12
View File
@@ -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(); clearScene();
@@ -91,15 +103,6 @@ void Preview::setModel( const LabelModel* model )
} }
///
/// Set renderer
///
void Preview::setRenderer( const PageRenderer* renderer )
{
mRenderer = renderer;
}
/// ///
/// Resize Event Handler /// Resize Event Handler
/// ///
+3 -2
View File
@@ -46,11 +46,12 @@ public:
///////////////////////////////// /////////////////////////////////
// Properties // Renderer
///////////////////////////////// /////////////////////////////////
public: public:
void setModel( const LabelModel* model );
void setRenderer( const PageRenderer* renderer ); void setRenderer( const PageRenderer* renderer );
private slots:
void onRendererChanged();
///////////////////////////////////// /////////////////////////////////////
+16 -19
View File
@@ -54,33 +54,35 @@ PrintView::~PrintView()
void PrintView::setModel( LabelModel* model ) void PrintView::setModel( LabelModel* model )
{ {
mModel = model; mModel = model;
mRenderer.setModel( mModel );
connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) ); connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
connect( mModel, SIGNAL(changed()), this, SLOT(onLabelChanged()) );
onLabelSizeChanged();
onFormChanged(); onFormChanged();
} }
/// ///
/// Label size changed handler /// Model changed handler
/// ///
void PrintView::onLabelSizeChanged() void PrintView::onModelChanged()
{ {
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() ); updateView();
preview->setModel( mModel );
mRenderer.setModel( mModel );
} }
/// ///
/// 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,20 +97,15 @@ void PrintView::onFormChanged()
mRenderer.setNCopies( copiesSpin->value() ); mRenderer.setNCopies( copiesSpin->value() );
mRenderer.setStartLabel( copiesStartSpin->value() - 1 ); 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.setPrintOutlines( printOutlinesCheck->isChecked() );
mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() ); mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() );
mRenderer.setPrintReverse( printReverseCheck->isChecked() ); mRenderer.setPrintReverse( printReverseCheck->isChecked() );
pageSpin->setRange( 1, mRenderer.nPages() );
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
mRenderer.setIPage( pageSpin->value() - 1 ); mRenderer.setIPage( pageSpin->value() - 1 );
preview->update(); updateView();
mBlocked = false; mBlocked = false;
} }
} }
+2 -2
View File
@@ -56,8 +56,8 @@ public:
// Slots // Slots
///////////////////////////////// /////////////////////////////////
private slots: private slots:
void onLabelChanged(); void onModelChanged();
void onLabelSizeChanged(); void updateView();
void onFormChanged(); void onFormChanged();
void onPrintButtonClicked(); void onPrintButtonClicked();