- Formatted all CodeGen module files (9 files) - Formatted LtsAppDescriptor module files - Formatted LtsAppManager/AppChooser files - Applied clang-format to all DTC and enum headers across modules - Removed coordTransTests from CommonUnitTestsPlaceholder (moved to tests/) Cosmetic changes only, no functional modifications. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
230 lines
6.6 KiB
C++
230 lines
6.6 KiB
C++
|
|
|
|
#pragma once
|
|
|
|
#include <QtCore/QSet>
|
|
#include <QtPrintSupport/QPrinter>
|
|
|
|
namespace NGL
|
|
{
|
|
class INGLLogger;
|
|
class Settings;
|
|
} // namespace NGL
|
|
|
|
namespace KDReports
|
|
{
|
|
class Report;
|
|
}
|
|
|
|
class QPainter;
|
|
class QAbstractItemView;
|
|
class QAbstractItemModel;
|
|
class QModelIndex;
|
|
class QTextDocument;
|
|
|
|
namespace LtsPrinting
|
|
{
|
|
|
|
static constexpr int DECORATION_EXTENT = 50;
|
|
static constexpr int DOC_MARGIN = 60;
|
|
static constexpr int ProjectIconHeight = 40;
|
|
|
|
static const QLatin1String
|
|
HeaderText("<table width=\"100%\">"
|
|
" <tr>"
|
|
" <td align=\"left\" valign=\"bottom\">&exercise;</td>"
|
|
" <td align=\"center\" valign=\"bottom\">&title;</td>"
|
|
" <td align=\"right\" valign=\"top\"><img src=\"&logo;\" height=\"&logoHeight;\" alt=\"Logo\" /></td>"
|
|
" </tr>"
|
|
"</table>");
|
|
|
|
static const QLatin1String FooterText("<table width=\"100%\">"
|
|
" <tr>"
|
|
" <td align=\"left\">&date; -- &user;</td>"
|
|
" <td align=\"center\" valign=\"bottom\">&footertitle;</td>"
|
|
" <td align=\"right\">&page;</td>"
|
|
" </tr>"
|
|
"</table>");
|
|
|
|
class Base
|
|
{
|
|
public:
|
|
Base(QTextDocument& doc, QWidget* dialogParent, const QString& dialogTitle, const QString& _fn,
|
|
QPrinter::PaperSize _ps = QPrinter::A4, QPrinter::Orientation _or = QPrinter::Portrait,
|
|
QPrinter::ColorMode _cm = QPrinter::Color);
|
|
|
|
virtual ~Base();
|
|
|
|
QPrinter* printer();
|
|
|
|
static void setPrintToFile(bool printToFile);
|
|
|
|
static QString styleSheet();
|
|
|
|
QPrinter::PageSize pageSize() const;
|
|
|
|
void setPageSize(QPrinter::PageSize size);
|
|
|
|
QPrinter::Orientation orientation() const;
|
|
|
|
void setOrientation(QPrinter::Orientation orientation);
|
|
|
|
bool newPage();
|
|
|
|
double leftMargin() const;
|
|
|
|
void setLeftMargin(double margin);
|
|
|
|
double rightMargin() const;
|
|
|
|
void setRightMargin(double margin);
|
|
|
|
double topMargin() const;
|
|
|
|
void setTopMargin(double margin);
|
|
|
|
double bottomMargin() const;
|
|
|
|
void setBottomMargin(double margin);
|
|
|
|
void setMargins(double margin);
|
|
|
|
double spacing() const;
|
|
|
|
void setSpacing(double spacing);
|
|
|
|
double headerSize() const;
|
|
|
|
void setHeaderSize(double size);
|
|
|
|
double headerRule() const;
|
|
|
|
void setHeaderRule(double pointsize);
|
|
|
|
const QString& headerText() const;
|
|
|
|
void setHeaderText(const QString& text);
|
|
|
|
double footerSize() const;
|
|
|
|
void setFooterSize(double size);
|
|
|
|
double footerRule() const;
|
|
|
|
void setFooterRule(double pointsize);
|
|
|
|
const QString& footerText() const;
|
|
|
|
void setFooterText(const QString& text);
|
|
|
|
void setFooterTitle(const QString& footertitle)
|
|
{
|
|
footertitle_ = footertitle;
|
|
}
|
|
|
|
void setItemFontSize(int itemFontSize);
|
|
|
|
static void printTitleData(QString& htmlStr, const QString& title, const QString& heading = QStringLiteral("h3"));
|
|
|
|
bool printListData(QString& str, const QAbstractItemView* view, const QString& title, bool asIcons = false,
|
|
int iconExtent = DECORATION_EXTENT);
|
|
|
|
bool printTableData(QString& str, const QAbstractItemView* view, const QString& title = QString(),
|
|
const QSet<int>& suppressCols = QSet<int>(), int iconExtent = DECORATION_EXTENT);
|
|
|
|
bool printTreeData(QString& str, const QAbstractItemView* view, const QString& title = QString(),
|
|
const QSet<int>& suppressCols = QSet<int>(), int iconExtent = DECORATION_EXTENT,
|
|
const QList<QString>& tabtexts = QList<QString>());
|
|
|
|
static bool printDocTextBlock(QTextDocument& doc, const QString& text, const QString& title = QString());
|
|
|
|
bool printDocImage(QTextDocument& doc, const QImage& image, const QString& title = QString(),
|
|
const QString& description = QString(), const qreal alreadyUsedHeight = 0) const;
|
|
|
|
static bool printReportData(QTextDocument& doc, KDReports::Report& report);
|
|
|
|
virtual void print(QTextDocument* doc);
|
|
|
|
virtual void printSinglePage(QTextDocument* doc);
|
|
|
|
virtual void printDone();
|
|
|
|
template <class T> static QSet<int> getHiddenCols(T* view)
|
|
{
|
|
QSet<int> hiddenCols;
|
|
int colCount = view->model()->columnCount();
|
|
for (int i = 0; i < colCount; ++i)
|
|
{
|
|
if (view->isColumnHidden(i))
|
|
hiddenCols += i;
|
|
}
|
|
return hiddenCols;
|
|
}
|
|
|
|
void setCurrentExerciseName(const QString& exerciseName);
|
|
|
|
void setOperatorName(const QString& operatorName);
|
|
|
|
void paintPage(QTextDocument* document, int pagenum);
|
|
|
|
QSize pageSizeInMM();
|
|
|
|
protected:
|
|
NGL::INGLLogger& m_logger;
|
|
bool printTableItemData(QString& str, const QAbstractItemModel* model, const QModelIndex& mi, int rowSpanSize,
|
|
int columnSpanSize, int iconExtent = DECORATION_EXTENT);
|
|
bool printItemData(QString& str, const QAbstractItemModel* model, const QModelIndex& mi,
|
|
int iconExtent = DECORATION_EXTENT);
|
|
void printDecorationData(QString& str, const QAbstractItemModel* model, const QModelIndex& mi,
|
|
int iconExtent = DECORATION_EXTENT);
|
|
void printListPoint(QString& str, const QAbstractItemView* view, const QAbstractItemModel* vm,
|
|
const QModelIndex& miColumn0, const QSet<int>& suppressCols = QSet<int>(),
|
|
int iconExtent = DECORATION_EXTENT);
|
|
static int hierarchyCount(const QModelIndex& child);
|
|
QString iconFilename(int nr) const;
|
|
QSize printerPageSize() const;
|
|
QSize contentPageSize() const;
|
|
|
|
QString currentExerciseName() const;
|
|
QString operatorName() const;
|
|
|
|
QRectF paperRect(QPaintDevice* device);
|
|
|
|
QRectF contentRect(QPaintDevice* device);
|
|
QRectF headerRect(QPaintDevice* device);
|
|
QRectF footerRect(QPaintDevice* device);
|
|
|
|
void printSinglePage();
|
|
void print();
|
|
|
|
private:
|
|
QPrinter* m_printer;
|
|
QPainter* m_painter;
|
|
static bool m_printToFile;
|
|
int m_iconFilenameNr;
|
|
|
|
QTextDocument* m_tempdoc;
|
|
|
|
double leftmargin_;
|
|
double rightmargin_;
|
|
double topmargin_;
|
|
double bottommargin_;
|
|
double spacing_;
|
|
|
|
double headersize_;
|
|
double headerrule_;
|
|
QString headertext_;
|
|
double footersize_;
|
|
double footerrule_;
|
|
QString footertext_;
|
|
QString footertitle_;
|
|
int itemFontSize_;
|
|
|
|
private:
|
|
NGL::Settings* m_settings;
|
|
QString m_exerciseName;
|
|
QString m_operatorName;
|
|
int m_currentPage;
|
|
};
|
|
} // namespace LtsPrinting
|