[PATCH] Print: add the "1 dive per page" option

Dirk Hohndel dirk at hohndel.org
Thu Jul 24 10:56:31 PDT 2014


Given the impact on manual and translations I my release plans... I'm a
bit nervous about this.

On the flip side... heck yeah, I want this :-)

*pondering*

/D

On Thu, Jul 24, 2014 at 07:08:02PM +0300, Lubomir I. Ivanov wrote:
> From: "Lubomir I. Ivanov" <neolit123 at 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 <neolit123 at 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 at hohndel.org
> http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface


More information about the subsurface mailing list