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
MergeView.h
ObjectEditor.h
PageRenderer.h
PreferencesDialog.h
PrintView.h
PropertiesView.h
+14
View File
@@ -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
///
+2
View File
@@ -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();
/////////////////////////////////
+34 -1
View File
@@ -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
View File
@@ -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
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();
@@ -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
View File
@@ -46,11 +46,12 @@ public:
/////////////////////////////////
// Properties
// Renderer
/////////////////////////////////
public:
void setModel( const LabelModel* model );
void setRenderer( const PageRenderer* renderer );
private slots:
void onRendererChanged();
/////////////////////////////////////
+15 -18
View File
@@ -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
View File
@@ -56,8 +56,8 @@ public:
// Slots
/////////////////////////////////
private slots:
void onLabelChanged();
void onLabelSizeChanged();
void onModelChanged();
void updateView();
void onFormChanged();
void onPrintButtonClicked();