From: "Lubomir I. Ivanov" <neolit...@gmail.com> With this option there is an exception, which makes the notes section of the profile table occupy half the page.
Signed-off-by: Lubomir I. Ivanov <neolit...@gmail.com> --- http://trac.hohndel.org/ticket/636#comment:4 --- display.h | 3 ++- qt-ui/printlayout.cpp | 14 ++++++++++---- qt-ui/printlayout.h | 2 +- qt-ui/printoptions.cpp | 9 +++++++++ qt-ui/printoptions.h | 1 + qt-ui/printoptions.ui | 13 +++++++++++++ 6 files changed, 36 insertions(+), 6 deletions(-) diff --git a/display.h b/display.h index b728b8b..7775dcf 100644 --- a/display.h +++ b/display.h @@ -39,7 +39,8 @@ struct options { enum { PRETTY, TABLE, - TWOPERPAGE + TWOPERPAGE, + ONEPERPAGE } type; int print_selected; int color_selected; diff --git a/qt-ui/printlayout.cpp b/qt-ui/printlayout.cpp index 6aaff02..4b368db 100644 --- a/qt-ui/printlayout.cpp +++ b/qt-ui/printlayout.cpp @@ -68,6 +68,9 @@ void PrintLayout::print() case options::PRETTY: printProfileDives(3, 2); break; + case options::ONEPERPAGE: + printProfileDives(1, 1); + break; case options::TWOPERPAGE: printProfileDives(2, 1); break; @@ -167,7 +170,8 @@ void PrintLayout::printProfileDives(int divesPerRow, int divesPerColumn) // create a model and table ProfilePrintModel model; model.setFontsize(divesPerColumn == 1 ? 6.5 : 4.5); - QPointer<QTableView> table(createProfileTable(&model, scaledW)); + // if there is only one dive per page row we pass fitNotesToHeight to be almost half the page height + QPointer<QTableView> table(createProfileTable(&model, scaledW, (divesPerRow == 1) ? scaledH * 0.45 : 0.0)); // profilePrintTableMaxH updates after the table is created const int tableH = profilePrintTableMaxH; // resize the profile widget @@ -227,7 +231,7 @@ void PrintLayout::printProfileDives(int divesPerRow, int divesPerColumn) } /* we create a table that has a fixed height, but can stretch to fit certain width */ -QTableView *PrintLayout::createProfileTable(ProfilePrintModel *model, const int tableW) +QTableView *PrintLayout::createProfileTable(ProfilePrintModel *model, const int tableW, const qreal fitNotesToHeight) { // setup a new table QTableView *table = new QTableView(); @@ -266,14 +270,16 @@ QTableView *PrintLayout::createProfileTable(ProfilePrintModel *model, const int table->setSpan(6, 0, 1, 5); table->setSpan(7, 0, 5, 5); /* resize row heights to the 'profilePrintRowHeights' indexes. - * profilePrintTableMaxH will then hold the table height. */ + * profilePrintTableMaxH will then hold the table height. + * what fitNotesToHeight does it to expand the notes section to fit a special height */ int i; profilePrintTableMaxH = 0; for (i = 0; i < rows; i++) { - int h = profilePrintRowHeights.at(i); + int h = (i == rows - 1 && fitNotesToHeight != 0.0) ? fitNotesToHeight : profilePrintRowHeights.at(i); profilePrintTableMaxH += h; vHeader->resizeSection(i, h); } + // resize columns. columns widths are percentages from the table width. int accW = 0; for (i = 0; i < cols; i++) { diff --git a/qt-ui/printlayout.h b/qt-ui/printlayout.h index 8a90790..efd3159 100644 --- a/qt-ui/printlayout.h +++ b/qt-ui/printlayout.h @@ -38,7 +38,7 @@ private: void setup(); int estimateTotalDives() const; void printProfileDives(int divesPerRow, int divesPerColumn); - QTableView *createProfileTable(ProfilePrintModel *model, const int tableW); + QTableView *createProfileTable(ProfilePrintModel *model, const int tableW, const qreal fitNotesToHeight = 0.0); void printTable(); void addTablePrintDataRow(TablePrintModel *model, int row, struct dive *dive) const; void addTablePrintHeadingRow(TablePrintModel *model, int row) const; diff --git a/qt-ui/printoptions.cpp b/qt-ui/printoptions.cpp index ac5f655..818e89c 100644 --- a/qt-ui/printoptions.cpp +++ b/qt-ui/printoptions.cpp @@ -23,6 +23,9 @@ void PrintOptions::setup(struct options *printOpt) case options::TWOPERPAGE: ui.radioTwoDives->setChecked(true); break; + case options::ONEPERPAGE: + ui.radioOneDive->setChecked(true); + break; case options::TABLE: ui.radioTablePrint->setChecked(true); break; @@ -44,6 +47,7 @@ void PrintOptions::setup(struct options *printOpt) connect(ui.radioSixDives, SIGNAL(clicked(bool)), this, SLOT(radioSixDivesClicked(bool))); connect(ui.radioTwoDives, SIGNAL(clicked(bool)), this, SLOT(radioTwoDivesClicked(bool))); + connect(ui.radioOneDive, SIGNAL(clicked(bool)), this, SLOT(radioOneDiveClicked(bool))); connect(ui.radioTablePrint, SIGNAL(clicked(bool)), this, SLOT(radioTablePrintClicked(bool))); connect(ui.printInColor, SIGNAL(clicked(bool)), this, SLOT(printInColorClicked(bool))); @@ -65,6 +69,11 @@ void PrintOptions::radioTwoDivesClicked(bool check) printOptions->type = options::TWOPERPAGE; } +void PrintOptions::radioOneDiveClicked(bool check) +{ + printOptions->type = options::ONEPERPAGE; +} + void PrintOptions::radioTablePrintClicked(bool check) { printOptions->type = options::TABLE; diff --git a/qt-ui/printoptions.h b/qt-ui/printoptions.h index 66d3d74..e14ae46 100644 --- a/qt-ui/printoptions.h +++ b/qt-ui/printoptions.h @@ -22,6 +22,7 @@ private slots: void radioSixDivesClicked(bool check); void radioTwoDivesClicked(bool check); + void radioOneDiveClicked(bool check); void radioTablePrintClicked(bool check); void printInColorClicked(bool check); void printSelectedClicked(bool check); diff --git a/qt-ui/printoptions.ui b/qt-ui/printoptions.ui index c108315..e7bdbf6 100644 --- a/qt-ui/printoptions.ui +++ b/qt-ui/printoptions.ui @@ -134,6 +134,19 @@ </widget> </item> <item> + <widget class="QRadioButton" name="radioOneDive"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>1 dive per page</string> + </property> + </widget> + </item> + <item> <widget class="QRadioButton" name="radioTablePrint"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> -- 1.7.11.msysgit.0 _______________________________________________ subsurface mailing list subsurface@hohndel.org http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface