diff --git a/sources/bordertitleblock.cpp b/sources/bordertitleblock.cpp index 5cc110866..55e64304e 100644 --- a/sources/bordertitleblock.cpp +++ b/sources/bordertitleblock.cpp @@ -696,6 +696,45 @@ DiagramPosition BorderTitleBlock::convertPosition(const QPointF &pos) return(DiagramPosition(letter, row_number)); } +/** + * @brief BorderTitleBlock::setAuthor + * @param author the new value of the "Author" field + */ +void BorderTitleBlock::setAuthor(const QString &author) { + btb_author_ = author; +} + +/** + * @brief BorderTitleBlock::setDate + * @param date the new value of the "Date" field + */ +void BorderTitleBlock::setDate(const QDate &date) { + btb_date_ = date; +} + +/** + * @brief BorderTitleBlock::setTitle + * @param title the new value of the "Title" field + */ +void BorderTitleBlock::setTitle(const QString &title) +{ + if (btb_title_ != title) + { + btb_title_ = title; + emit(diagramTitleChanged(title)); + } +} + +/** + * @brief BorderTitleBlock::setFolio + * @param folio the new value of the "Folio" field + */ +void BorderTitleBlock::setFolio(const QString &folio) +{ + btb_folio_ = folio; + emit (titleBlockFolioChanged(folio)); +} + /** Update the informations given to the titleblock template by regenerating a DiagramContext object. @@ -723,6 +762,8 @@ void BorderTitleBlock::updateDiagramContextForTitleBlock(const DiagramContext &i context.addValue("folio-id", folio_index_); context.addValue("folio-total", folio_total_); context.addValue("auto_page_num", btb_auto_page_num_); + context.addValue("previous-folio-num", m_previous_folio_num); + context.addValue("next-folio-num", m_next_folio_num); titleblock_template_renderer_ -> setContext(context); } @@ -769,3 +810,75 @@ void BorderTitleBlock::setFolioData(int index, int total, const QString& autonum updateDiagramContextForTitleBlock(project_properties); } + +/** + * @brief BorderTitleBlock::setPlant + * @param plant the new value of the "plant" field + */ +void BorderTitleBlock::setPlant(const QString &plant) { + btb_plant_ = plant; +} + +/** + * @brief BorderTitleBlock::setLocMach + * @param locmach the new value of the "locmach" field + */ +void BorderTitleBlock::setLocMach(const QString &locmach) { + btb_locmach_ = locmach; +} + +/** + * @brief BorderTitleBlock::setIndicerev + * @param indexrev the new value of the "indexrev" field + */ +void BorderTitleBlock::setIndicerev(const QString &indexrev) { + btb_indexrev_ = indexrev; +} + +/** + * @brief BorderTitleBlock::setFileName + * @param filename the new value of the "filename" field + */ +void BorderTitleBlock::setFileName(const QString &filename) { + btb_filename_ = filename; +} + +/** + * @brief BorderTitleBlock::setVersion + * @param version the new value of the "version" field + */ +void BorderTitleBlock::setVersion(const QString &version) { + btb_version_ = version; +} + +/** + * @brief BorderTitleBlock::setAutoPageNum + * @param auto_page_num the new value of the "auto_page_num" field + */ +void BorderTitleBlock::setAutoPageNum(const QString &auto_page_num) { + btb_auto_page_num_ = auto_page_num; +} + +/** + * @brief BorderTitleBlock::setPreviousFolioNum + * @param previous the new value of the "previous-folio-num" field + */ +void BorderTitleBlock::setPreviousFolioNum(const QString &previous) +{ + m_previous_folio_num = previous; + DiagramContext context = titleblock_template_renderer_->context(); + context.addValue("previous-folio-num", m_previous_folio_num); + titleblock_template_renderer_->setContext(context); +} + +/** + * @brief BorderTitleBlock::setNextFolioNum + * @param next the new value of the "next-folio-num" field + */ +void BorderTitleBlock::setNextFolioNum(const QString &next) +{ + m_next_folio_num = next; + DiagramContext context = titleblock_template_renderer_->context(); + context.addValue("next-folio-num", m_next_folio_num); + titleblock_template_renderer_->setContext(context); +} diff --git a/sources/bordertitleblock.h b/sources/bordertitleblock.h index 71a4130f1..4c2ac8a58 100644 --- a/sources/bordertitleblock.h +++ b/sources/bordertitleblock.h @@ -86,149 +86,131 @@ class BorderTitleBlock : public QObject QRectF outsideBorderRect() const; QRectF insideBorderRect() const; - // methods to get title block basic data - /// @return the value of the title block "Author" field - QString author() const { return(btb_author_); } - /// @return the value of the title block "Date" field - QDate date() const { return(btb_date_); } - /// @return the value of the title block "Title" field - QString title() const { return(btb_title_); } - /// @return the value of the title block "Folio" field - QString folio() const { return(btb_folio_); } - /// @return the value of the title block "Folio" field as displayed - QString finalfolio() const { return(btb_final_folio_); } - /// @return the value of the title block "Plant" field - QString plant() const { return(btb_plant_); } - /// @return the value of the title block "Locmach" field - QString locmach() const { return(btb_locmach_); } - /// @return the value of the revision index block "Folio" field - QString indexrev() const { return(btb_indexrev_); } - - /// @return the value of the title block "File" field - QString fileName() const { return(btb_filename_); } - /// @return the value of the title block Additional Fields - QString version() const { return(btb_version_); } - /// @return the value of the title block Additional Fields - DiagramContext additionalFields() const { return (additional_fields_); } - /// @return the value of the title block - QString autoPageNum() const { return(btb_auto_page_num_); } - /// @return the value of the total number of folios - int folioTotal() const { return(folio_total_);} - - // methods to get display options - /// @return true si le cartouche est affiche, false sinon - bool titleBlockIsDisplayed() const { return(display_titleblock_); } - /// @return true si les entetes des colonnes sont affiches, false sinon - bool columnsAreDisplayed() const { return(display_columns_); } - /// @return true si les entetes des lignes sont affiches, false sinon - bool rowsAreDisplayed() const { return(display_rows_); } - /// @return true si la bordure est affichee, false sinon - bool borderIsDisplayed() const { return(display_border_); } - - // methods to set dimensions - void setColumnsCount(int); - void setRowsCount(int); - void setColumnsWidth(const qreal &); - void setRowsHeight(const qreal &); - void setColumnsHeaderHeight(const qreal &); - void setRowsHeaderWidth(const qreal &); - void setDiagramHeight(const qreal &); - - DiagramPosition convertPosition(const QPointF &); - - // methods to set title block basic data - /// @param author the new value of the "Author" field - void setAuthor(const QString &author) { btb_author_ = author; } - /// @param author the new value of the "Date" field - void setDate(const QDate &date) { btb_date_ = date; } - /// @param author the new value of the "Title" field - void setTitle(const QString &title) { - if (btb_title_ != title) { - btb_title_ = title; - emit(diagramTitleChanged(title)); - } - } - /// @param author the new value of the "Folio" field - void setFolio(const QString &folio) { - btb_folio_ = folio; - emit (titleBlockFolioChanged(folio)); - } - void setFolioData(int, int, const QString& = nullptr, const DiagramContext & = DiagramContext()); - /// @param author the new value of the "File" field - void setPlant(const QString &plant) { btb_plant_ = plant; } - void setLocMach(const QString &locmach) { btb_locmach_ = locmach; } - void setIndicerev(const QString &indexrev){ btb_indexrev_ = indexrev; } - void setFileName(const QString &filename) { btb_filename_ = filename; } - /// @param author the new value of the "Version" field - void setVersion(const QString &version) { btb_version_ = version; } - /// @param author the new value of the "Auto Page Num" field - void setAutoPageNum(const QString &auto_page_num) { btb_auto_page_num_ = auto_page_num;} - - void titleBlockToXml(QDomElement &); - void titleBlockFromXml(const QDomElement &); - void borderToXml(QDomElement &); - void borderFromXml(const QDomElement &); - - TitleBlockProperties exportTitleBlock(); - void importTitleBlock(const TitleBlockProperties &); - BorderProperties exportBorder(); - void importBorder(const BorderProperties &); - - const TitleBlockTemplate *titleBlockTemplate(); - void setTitleBlockTemplate(const TitleBlockTemplate *); - QString titleBlockTemplateName() const; + // methods to get title block basic data + /// @return the value of the title block "Author" field + QString author() const { return(btb_author_); } + /// @return the value of the title block "Date" field + QDate date() const { return(btb_date_); } + /// @return the value of the title block "Title" field + QString title() const { return(btb_title_); } + /// @return the value of the title block "Folio" field + QString folio() const { return(btb_folio_); } + /// @return the value of the title block "Folio" field as displayed + QString finalfolio() const { return(btb_final_folio_); } + /// @return the value of the title block "Plant" field + QString plant() const { return(btb_plant_); } + /// @return the value of the title block "Locmach" field + QString locmach() const { return(btb_locmach_); } + /// @return the value of the revision index block "Folio" field + QString indexrev() const { return(btb_indexrev_); } + /// @return the value of the title block "File" field + QString fileName() const { return(btb_filename_); } + /// @return the value of the title block Additional Fields + QString version() const { return(btb_version_); } + /// @return the value of the title block Additional Fields + DiagramContext additionalFields() const { return (additional_fields_); } + /// @return the value of the title block + QString autoPageNum() const { return(btb_auto_page_num_); } + /// @return the value of the total number of folios + int folioTotal() const { return(folio_total_);} + // methods to get display options + /// @return true si le cartouche est affiche, false sinon + bool titleBlockIsDisplayed() const { return(display_titleblock_); } + /// @return true si les entetes des colonnes sont affiches, false sinon + bool columnsAreDisplayed() const { return(display_columns_); } + /// @return true si les entetes des lignes sont affiches, false sinon + bool rowsAreDisplayed() const { return(display_rows_); } + /// @return true si la bordure est affichee, false sinon + bool borderIsDisplayed() const { return(display_border_); } + + // methods to set dimensions + void setColumnsCount(int); + void setRowsCount(int); + void setColumnsWidth(const qreal &); + void setRowsHeight(const qreal &); + void setColumnsHeaderHeight(const qreal &); + void setRowsHeaderWidth(const qreal &); + void setDiagramHeight(const qreal &); + + DiagramPosition convertPosition(const QPointF &); + + // methods to set title block basic data + void setAuthor(const QString &author); + void setDate(const QDate &date); + void setTitle(const QString &title); + void setFolio(const QString &folio); + void setFolioData(int, int, const QString& = nullptr, const DiagramContext & = DiagramContext()); + void setPlant(const QString &plant); + void setLocMach(const QString &locmach); + void setIndicerev(const QString &indexrev); + void setFileName(const QString &filename); + void setVersion(const QString &version); + void setAutoPageNum(const QString &auto_page_num); + void setPreviousFolioNum(const QString &previous); + void setNextFolioNum(const QString &next); + + void titleBlockToXml(QDomElement &); + void titleBlockFromXml(const QDomElement &); + void borderToXml(QDomElement &); + void borderFromXml(const QDomElement &); + + TitleBlockProperties exportTitleBlock(); + void importTitleBlock(const TitleBlockProperties &); + BorderProperties exportBorder(); + void importBorder(const BorderProperties &); + + const TitleBlockTemplate *titleBlockTemplate(); + void setTitleBlockTemplate(const TitleBlockTemplate *); + QString titleBlockTemplateName() const; + public slots: - void titleBlockTemplateChanged(const QString &); - void titleBlockTemplateRemoved(const QString &, const TitleBlockTemplate * = nullptr); - - // methods to set display options - void displayTitleBlock(bool); - void displayColumns(bool); - void displayRows(bool); - void displayBorder(bool); - void slot_setAutoPageNum (QString); + void titleBlockTemplateChanged(const QString &); + void titleBlockTemplateRemoved(const QString &, const TitleBlockTemplate * = nullptr); + + // methods to set display options + void displayTitleBlock(bool); + void displayColumns(bool); + void displayRows(bool); + void displayBorder(bool); + void slot_setAutoPageNum (QString); private: - void updateRectangles(); - void updateDiagramContextForTitleBlock(const DiagramContext & = DiagramContext()); - QString incrementLetters(const QString &); + void updateRectangles(); + void updateDiagramContextForTitleBlock(const DiagramContext & = DiagramContext()); + QString incrementLetters(const QString &); - signals: - /** - Signal emitted after the border has changed - @param old_border Former border - @param new_border New border - */ - void borderChanged(QRectF old_border, QRectF new_border); - /** - Signal emitted after display options have changed - */ - void displayChanged(); - - /** - Signal emitted after the title has changed - */ - void diagramTitleChanged(const QString &); - - /** - @brief titleBlockFolioChanged - Signal emitted after Folio has changed - */ - void titleBlockFolioChanged(const QString &); - - /** - Signal emitted when the title block requires its data to be updated in order - to generate the folio field. - */ - void needFolioData(); - - /** - Signal emitted when this object needs to set a specific title block - template. This object cannot handle the job since it does not know of - its parent project. - */ - void needTitleBlockTemplate(const QString &); + signals: + /** + Signal emitted after the border has changed + @param old_border Former border + @param new_border New border + */ + void borderChanged(QRectF old_border, QRectF new_border); + /** + Signal emitted after display options have changed + */ + void displayChanged(); + /** + Signal emitted after the title has changed + */ + void diagramTitleChanged(const QString &); + /** + @brief titleBlockFolioChanged + Signal emitted after Folio has changed + */ + void titleBlockFolioChanged(const QString &); + /** + Signal emitted when the title block requires its data to be updated in order + to generate the folio field. + */ + void needFolioData(); + /** + Signal emitted when this object needs to set a specific title block + template. This object cannot handle the job since it does not know of + its parent project. + */ + void needTitleBlockTemplate(const QString &); // attributes private: @@ -248,25 +230,27 @@ class BorderTitleBlock : public QObject QString btb_version_; DiagramContext additional_fields_; Qt::Edge m_edge; + QString m_next_folio_num, + m_previous_folio_num; - // border dimensions (rows and columns) - // columns: number and dimensions + // border dimensions (rows and columns) + // columns: number and dimensions int columns_count_; qreal columns_width_; qreal columns_header_height_; - // rows: number and dimensions + // rows: number and dimensions int rows_count_; qreal rows_height_; qreal rows_header_width_; - // title block dimensions + // title block dimensions qreal titleblock_height_; - // rectangles used for drawing operations + // rectangles used for drawing operations QRectF diagram_rect_; - // display options + // display options bool display_titleblock_; bool display_columns_; bool display_rows_; diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp index b9220a714..4c979f156 100644 --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -1744,7 +1744,8 @@ bool QETProject::projectWasModified() { Indique a chaque schema du projet quel est son numero de folio et combien de folio le projet contient. */ -void QETProject::updateDiagramsFolioData() { +void QETProject::updateDiagramsFolioData() +{ int total_folio = m_diagrams_list.count(); DiagramContext project_wide_properties = project_properties_; @@ -1752,19 +1753,38 @@ void QETProject::updateDiagramsFolioData() { project_wide_properties.addValue("projectpath", filePath()); project_wide_properties.addValue("projectfilename", QFileInfo(filePath()).baseName()); - for (int i = 0 ; i < total_folio ; ++ i) { - QString title = m_diagrams_list[i] -> title(); + for (int i = 0 ; i < total_folio ; ++ i) + { QString autopagenum = m_diagrams_list[i]->border_and_titleblock.autoPageNum(); NumerotationContext nC = folioAutoNum(autopagenum); NumerotationContextCommands nCC = NumerotationContextCommands(nC); - if((m_diagrams_list[i]->border_and_titleblock.folio().contains("%autonum"))&&(!autopagenum.isNull())){ + + if ((m_diagrams_list[i]->border_and_titleblock.folio().contains("%autonum")) && + (!autopagenum.isNull())) + { m_diagrams_list[i] -> border_and_titleblock.setFolioData(i + 1, total_folio, nCC.toRepresentedString(), project_wide_properties); m_diagrams_list[i]->project()->addFolioAutoNum(autopagenum,nCC.next()); } - else{ - m_diagrams_list[i] -> border_and_titleblock.setFolioData(i + 1, total_folio, nullptr, project_wide_properties); + else { + m_diagrams_list[i] -> border_and_titleblock.setFolioData(i + 1, total_folio, nullptr, project_wide_properties); } - m_diagrams_list[i] -> update(); + + if (i > 0) + { + m_diagrams_list.at(i)->border_and_titleblock.setPreviousFolioNum(m_diagrams_list.at(i-1)->border_and_titleblock.finalfolio()); + m_diagrams_list.at(i-1)->border_and_titleblock.setNextFolioNum(m_diagrams_list.at(i)->border_and_titleblock.finalfolio()); + + if (i == total_folio-1) { + m_diagrams_list.at(i)->border_and_titleblock.setNextFolioNum(QString()); + } + } + else { + m_diagrams_list.at(i)->border_and_titleblock.setPreviousFolioNum(QString()); + } + } + + for (Diagram *d : m_diagrams_list) { + d->update(); } } diff --git a/sources/titleblock/templatecellwidget.cpp b/sources/titleblock/templatecellwidget.cpp index 26a7b45ed..d587362eb 100644 --- a/sources/titleblock/templatecellwidget.cpp +++ b/sources/titleblock/templatecellwidget.cpp @@ -444,6 +444,8 @@ QString TitleBlockTemplateCellWidget::defaultVariablesString() const { "