blob: 659781c6fc92bcdba152605db9c5681010c02ac7 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
#ifdef SW_DLLIMPLEMENTATION
#undef SW_DLLIMPLEMENTATION
#endif
#include <svtools/prnsetup.hxx>
#include <unotools/cmdoptions.hxx>
#include <vcl/print.hxx>
#include <wrtsh.hxx>
#include <label.hxx>
#include <labprt.hxx>
#include <labimg.hxx>
#ifndef _LABIMP_HXX
#include "swuilabimp.hxx"
#endif
#ifndef _CMDID_H
#include <cmdid.h>
#endif
#ifndef _LABPRT_HRC
#include <labprt.hrc>
#endif
// --------------------------------------------------------------------------
SwLabPrtPage::SwLabPrtPage(Window* pParent, const SfxItemSet& rSet) :
SfxTabPage(pParent, SW_RES(TP_LAB_PRT), rSet),
pPrinter( 0 ),
aFLDontKnow (this, SW_RES(FL_DONTKNOW)),
aPageButton (this, SW_RES(BTN_PAGE )),
aSingleButton (this, SW_RES(BTN_SINGLE )),
aColText (this, SW_RES(TXT_COL )),
aColField (this, SW_RES(FLD_COL )),
aRowText (this, SW_RES(TXT_ROW )),
aRowField (this, SW_RES(FLD_ROW )),
aSynchronCB (this, SW_RES(CB_SYNCHRON)),
aFLPrinter (this, SW_RES(FL_PRINTER )),
aPrinterInfo (this, SW_RES(INF_PRINTER)),
aPrtSetup (this, SW_RES(BTN_PRTSETUP))
{
FreeResource();
SetExchangeSupport();
// Handler installieren
Link aLk = LINK(this, SwLabPrtPage, CountHdl);
aPageButton .SetClickHdl( aLk );
aSingleButton.SetClickHdl( aLk );
aPrtSetup.SetClickHdl( aLk );
SvtCommandOptions aCmdOpts;
if ( aCmdOpts.Lookup(
SvtCommandOptions::CMDOPTION_DISABLED,
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Print" ) ) ) )
{
aPrinterInfo.Hide();
aPrtSetup.Hide();
aFLPrinter.Hide();
}
}
// --------------------------------------------------------------------------
SwLabPrtPage::~SwLabPrtPage()
{
if (pPrinter)
delete pPrinter;
}
// --------------------------------------------------------------------------
IMPL_LINK( SwLabPrtPage, CountHdl, Button *, pButton )
{
if (pButton == &aPrtSetup)
{
// Druck-Setup aufrufen
if (!pPrinter)
pPrinter = new Printer;
PrinterSetupDialog* pDlg = new PrinterSetupDialog(this );
pDlg->SetPrinter(pPrinter);
pDlg->Execute();
delete pDlg;
GrabFocus();
aPrinterInfo.SetText(pPrinter->GetName());
return 0;
}
const sal_Bool bEnable = pButton == &aSingleButton;
aColText .Enable(bEnable);
aColField.Enable(bEnable);
aRowText .Enable(bEnable);
aRowField.Enable(bEnable);
aSynchronCB.Enable(!bEnable);
if ( bEnable )
aColField.GrabFocus();
#ifdef DBG_UTIL
else
ASSERT( pButton == &aPageButton, "NewButton?" );
#endif
return 0;
}
// --------------------------------------------------------------------------
SfxTabPage* SwLabPrtPage::Create(Window* pParent, const SfxItemSet& rSet)
{
return new SwLabPrtPage( pParent, rSet );
}
// --------------------------------------------------------------------------
void SwLabPrtPage::ActivatePage( const SfxItemSet& rSet )
{
Reset(rSet);
}
// --------------------------------------------------------------------------
int SwLabPrtPage::DeactivatePage(SfxItemSet* _pSet)
{
if ( _pSet )
FillItemSet(*_pSet);
return sal_True;
}
// --------------------------------------------------------------------------
void SwLabPrtPage::FillItem(SwLabItem& rItem)
{
rItem.bPage = aPageButton.IsChecked();
rItem.nCol = (sal_uInt16) aColField.GetValue();
rItem.nRow = (sal_uInt16) aRowField.GetValue();
rItem.bSynchron = aSynchronCB.IsChecked() && aSynchronCB.IsEnabled();
}
// --------------------------------------------------------------------------
sal_Bool SwLabPrtPage::FillItemSet(SfxItemSet& rSet)
{
SwLabItem aItem;
GetParent()->GetLabItem(aItem);
FillItem(aItem);
rSet.Put(aItem);
return sal_True;
}
// --------------------------------------------------------------------------
void SwLabPrtPage::Reset(const SfxItemSet& )
{
SwLabItem aItem;
GetParent()->GetLabItem(aItem);
aColField.SetValue (aItem.nCol);
aRowField.SetValue (aItem.nRow);
if (aItem.bPage)
{
aPageButton.Check();
aPageButton.GetClickHdl().Call(&aPageButton);
}
else
{
aSingleButton.GetClickHdl().Call(&aSingleButton);
aSingleButton.Check();
}
if (pPrinter)
{
// Drucker anzeigen
aPrinterInfo.SetText(pPrinter->GetName());
}
else
aPrinterInfo.SetText(Printer::GetDefaultPrinterName());
aColField.SetMax(aItem.nCols);
aRowField.SetMax(aItem.nRows);
aColField.SetLast(aColField.GetMax());
aRowField.SetLast(aRowField.GetMax());
aSynchronCB.Check(aItem.bSynchron);
}