summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2016-01-29 18:25:16 +0100
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-02-09 10:25:41 +0000
commit29b92329005eb2f31d2b76eafaa1ffff67387b8e (patch)
tree44e0760ab20529aaf0b52a76c298d3da440afcf4 /vcl/source
parent39eef4c5096b5e1379c3ebbac5b3fcad347d5600 (diff)
tdf#94097: Move 'Print to file' option to the front page
Change-Id: I4acc09d0a46d82cfc9a63cbffe8e53a1b86f3acd Reviewed-on: https://gerrit.libreoffice.org/21908 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/window/printdlg.cxx67
1 files changed, 37 insertions, 30 deletions
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 5f1970b86ab2..67b0acd970b0 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -484,7 +484,6 @@ PrintDialog::JobTabPage::JobTabPage( VclBuilder* pUIBuilder )
, mnCollateUIMode( 0 )
{
pUIBuilder->get(mpPrinters, "printers");
- mpPrinters->SetStyle(mpPrinters->GetStyle() | WB_SORT);
pUIBuilder->get(mpStatusTxt, "status");
pUIBuilder->get(mpLocationTxt, "location");
pUIBuilder->get(mpCommentTxt, "comment");
@@ -535,7 +534,6 @@ void PrintDialog::JobTabPage::storeToSettings()
PrintDialog::OutputOptPage::OutputOptPage( VclBuilder *pUIBuilder )
{
- pUIBuilder->get(mpToFileBox, "printtofile");
pUIBuilder->get(mpCollateSingleJobsBox, "singleprintjob");
pUIBuilder->get(mpPapersizeFromSetup, "papersizefromsetup");
}
@@ -560,15 +558,18 @@ void PrintDialog::OutputOptPage::storeToSettings()
{
SettingsConfigItem* pItem = SettingsConfigItem::get();
pItem->setValue( "PrintDialog",
- "ToFile",
- mpToFileBox->IsChecked() ? OUString("true")
- : OUString("false") );
- pItem->setValue( "PrintDialog",
"CollateSingleJobs",
mpCollateSingleJobsBox->IsChecked() ? OUString("true") :
OUString("false") );
}
+namespace {
+ bool lcl_ListBoxCompare( const OUString& rStr1, const OUString& rStr2 )
+ {
+ return ListBox::NaturalSortCompare( rStr1, rStr2 ) < 0;
+ }
+}
+
PrintDialog::PrintDialog( vcl::Window* i_pParent, const std::shared_ptr<PrinterController>& i_rController )
: ModalDialog(i_pParent, "PrintDialog", "vcl/ui/printdialog.ui")
, mpCustomOptionsUIBuilder(nullptr)
@@ -607,8 +608,10 @@ PrintDialog::PrintDialog( vcl::Window* i_pParent, const std::shared_ptr<PrinterC
Printer::updatePrinters();
+ maJobPage.mpPrinters->InsertEntry( maPrintToFileText );
// fill printer listbox
- const std::vector< OUString >& rQueues( Printer::GetPrinterQueues() );
+ std::vector< OUString > rQueues( Printer::GetPrinterQueues() );
+ std::sort( rQueues.begin(), rQueues.end(), lcl_ListBoxCompare );
for( std::vector< OUString >::const_iterator it = rQueues.begin();
it != rQueues.end(); ++it )
{
@@ -676,7 +679,6 @@ PrintDialog::PrintDialog( vcl::Window* i_pParent, const std::shared_ptr<PrinterC
maJobPage.mpCollateBox->SetToggleHdl( LINK( this, PrintDialog, ToggleHdl ) );
maJobPage.mpSetupButton->SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
maNUpPage.mpBorderCB->SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
- maOptionsPage.mpToFileBox->SetToggleHdl( LINK( this, PrintDialog, ToggleHdl ) );
maOptionsPage.mpPapersizeFromSetup->SetToggleHdl( LINK( this, PrintDialog, ToggleHdl ) );
maJobPage.mpReverseOrderBox->SetToggleHdl( LINK( this, PrintDialog, ToggleHdl ) );
maOptionsPage.mpCollateSingleJobsBox->SetToggleHdl( LINK( this, PrintDialog, ToggleHdl ) );
@@ -756,19 +758,12 @@ void PrintDialog::readFromSettings()
break;
}
}
- mpOKButton->SetText( maOptionsPage.mpToFileBox->IsChecked() ? maPrintToFileText : maPrintText );
// persistent window state
OUString aWinState( pItem->getValue( "PrintDialog",
"WindowState" ) );
if( !aWinState.isEmpty() )
SetWindowState( OUStringToOString( aWinState, RTL_TEXTENCODING_UTF8 ) );
-
- if( maOptionsPage.mpToFileBox->IsChecked() )
- {
- maPController->resetPrinterOptions( true );
- preparePreview( true, true );
- }
}
void PrintDialog::storeToSettings()
@@ -779,8 +774,13 @@ void PrintDialog::storeToSettings()
// store last selected printer
SettingsConfigItem* pItem = SettingsConfigItem::get();
pItem->setValue( "PrintDialog",
+ "ToFile",
+ isPrintToFile() ? OUString("true")
+ : OUString("false") );
+ pItem->setValue( "PrintDialog",
"LastPrinter",
- maJobPage.mpPrinters->GetSelectEntry() );
+ isPrintToFile() ? Printer::GetDefaultPrinterName()
+ : maJobPage.mpPrinters->GetSelectEntry() );
pItem->setValue( "PrintDialog",
"LastPage",
@@ -794,7 +794,7 @@ void PrintDialog::storeToSettings()
bool PrintDialog::isPrintToFile()
{
- return maOptionsPage.mpToFileBox->IsChecked();
+ return ( maJobPage.mpPrinters->GetSelectEntryPos() == 0 );
}
bool PrintDialog::isCollate()
@@ -1521,13 +1521,26 @@ IMPL_LINK_TYPED( PrintDialog, SelectHdl, ListBox&, rBox, void )
{
if( &rBox == maJobPage.mpPrinters )
{
- OUString aNewPrinter( rBox.GetSelectEntry() );
- // set new printer
- maPController->setPrinter( VclPtrInstance<Printer>( aNewPrinter ) );
- maPController->resetPrinterOptions( maOptionsPage.mpToFileBox->IsChecked() );
- // update text fields
- updatePrinterText();
- preparePreview();
+
+ if ( rBox.GetSelectEntryPos() != 0)
+ {
+ OUString aNewPrinter( rBox.GetSelectEntry() );
+ // set new printer
+ maPController->setPrinter( VclPtrInstance<Printer>( aNewPrinter ) );
+ maPController->resetPrinterOptions( false );
+ // update text fields
+ mpOKButton->SetText( maPrintText );
+ updatePrinterText();
+ preparePreview();
+ }
+ else // print to file
+ {
+ // use the default printer or FIXME: the last used one?
+ maPController->setPrinter( VclPtrInstance<Printer>( Printer::GetDefaultPrinterName() ) );
+ mpOKButton->SetText( maPrintToFileText );
+ maPController->resetPrinterOptions( true );
+ preparePreview( true, true );
+ }
}
else if( &rBox == maNUpPage.mpNupOrientationBox || &rBox == maNUpPage.mpNupOrderBox )
{
@@ -1575,12 +1588,6 @@ IMPL_LINK_TYPED( PrintDialog, ClickHdl, Button*, pButton, void )
{
previewBackward();
}
- else if( pButton == maOptionsPage.mpToFileBox )
- {
- mpOKButton->SetText( maOptionsPage.mpToFileBox->IsChecked() ? maPrintToFileText : maPrintText );
- maPController->resetPrinterOptions( maOptionsPage.mpToFileBox->IsChecked() );
- preparePreview( true, true );
- }
else if( pButton == maOptionsPage.mpPapersizeFromSetup )
{
bool bChecked = maOptionsPage.mpPapersizeFromSetup->IsChecked();