blob: 6e5d2bbb15917859653a9226184470957b31b447 [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 <vcl/print.hxx>
#include <svtools/prnsetup.hxx>
#include "swtypes.hxx"
#include "cmdid.h"
#include "envprt.hxx"
#include "envlop.hxx"
#include "uitool.hxx"
#include "envprt.hrc"
SwEnvPrtPage::SwEnvPrtPage(Window* pParent, const SfxItemSet& rSet) :
SfxTabPage(pParent, SW_RES(TP_ENV_PRT), rSet),
aAlignBox (this, SW_RES(BOX_ALIGN )),
aTopButton (this, SW_RES(BTN_TOP )),
aBottomButton(this, SW_RES(BTN_BOTTOM )),
aRightText (this, SW_RES(TXT_RIGHT )),
aRightField (this, SW_RES(FLD_RIGHT )),
aDownText (this, SW_RES(TXT_DOWN )),
aDownField (this, SW_RES(FLD_DOWN )),
aPrinterInfo (this, SW_RES(TXT_PRINTER)),
aNoNameFL (this, SW_RES(FL_NONAME )),
aPrinterFL (this, SW_RES(FL_PRINTER )),
aPrtSetup (this, SW_RES(BTN_PRTSETUP))
{
FreeResource();
SetExchangeSupport();
// Metriken
FieldUnit eUnit = ::GetDfltMetric(sal_False);
SetMetric(aRightField, eUnit);
SetMetric(aDownField , eUnit);
// Handler installieren
aTopButton .SetClickHdl(LINK(this, SwEnvPrtPage, ClickHdl));
aBottomButton.SetClickHdl(LINK(this, SwEnvPrtPage, ClickHdl));
aPrtSetup .SetClickHdl(LINK(this, SwEnvPrtPage, ButtonHdl));
// Bitmaps
aBottomButton.GetClickHdl().Call(&aBottomButton);
// ToolBox
Size aSz = aAlignBox.CalcWindowSizePixel();
aAlignBox.SetSizePixel(aSz);
// aAlignBox.SetPosPixel(Point(aNoNameFL.GetPosPixel().X() + (aNoNameFL.GetSizePixel().Width() - aSz.Width()) / 2, aAlignBox.GetPosPixel().Y()));
aAlignBox.SetClickHdl(LINK(this, SwEnvPrtPage, AlignHdl));
}
// --------------------------------------------------------------------------
SwEnvPrtPage::~SwEnvPrtPage()
{
}
// --------------------------------------------------------------------------
IMPL_LINK( SwEnvPrtPage, ClickHdl, Button *, EMPTYARG )
{
sal_Bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode();
if (aBottomButton.IsChecked())
{
// Briefumschlaege von unten
aAlignBox.SetItemImage(ITM_HOR_LEFT, Bitmap(SW_RES(bHC ? BMP_HOR_LEFT_LOWER_H : BMP_HOR_LEFT_LOWER)));
aAlignBox.SetItemImage(ITM_HOR_CNTR, Bitmap(SW_RES(bHC ? BMP_HOR_CNTR_LOWER_H : BMP_HOR_CNTR_LOWER)));
aAlignBox.SetItemImage(ITM_HOR_RGHT, Bitmap(SW_RES(bHC ? BMP_HOR_RGHT_LOWER_H : BMP_HOR_RGHT_LOWER)));
aAlignBox.SetItemImage(ITM_VER_LEFT, Bitmap(SW_RES(bHC ? BMP_VER_LEFT_LOWER_H : BMP_VER_LEFT_LOWER)));
aAlignBox.SetItemImage(ITM_VER_CNTR, Bitmap(SW_RES(bHC ? BMP_VER_CNTR_LOWER_H : BMP_VER_CNTR_LOWER)));
aAlignBox.SetItemImage(ITM_VER_RGHT, Bitmap(SW_RES(bHC ? BMP_VER_RGHT_LOWER_H : BMP_VER_RGHT_LOWER)));
}
else
{
// Briefumschlaege von oben
aAlignBox.SetItemImage(ITM_HOR_LEFT, Bitmap(SW_RES(bHC ? BMP_HOR_LEFT_UPPER_H : BMP_HOR_LEFT_UPPER)));
aAlignBox.SetItemImage(ITM_HOR_CNTR, Bitmap(SW_RES(bHC ? BMP_HOR_CNTR_UPPER_H : BMP_HOR_CNTR_UPPER)));
aAlignBox.SetItemImage(ITM_HOR_RGHT, Bitmap(SW_RES(bHC ? BMP_HOR_RGHT_UPPER_H : BMP_HOR_RGHT_UPPER)));
aAlignBox.SetItemImage(ITM_VER_LEFT, Bitmap(SW_RES(bHC ? BMP_VER_LEFT_UPPER_H : BMP_VER_LEFT_UPPER)));
aAlignBox.SetItemImage(ITM_VER_CNTR, Bitmap(SW_RES(bHC ? BMP_VER_CNTR_UPPER_H : BMP_VER_CNTR_UPPER)));
aAlignBox.SetItemImage(ITM_VER_RGHT, Bitmap(SW_RES(bHC ? BMP_VER_RGHT_UPPER_H : BMP_VER_RGHT_UPPER)));
}
return 0;
}
// --------------------------------------------------------------------------
IMPL_LINK( SwEnvPrtPage, ButtonHdl, Button *, pBtn )
{
if (pBtn == &aPrtSetup)
{
// Druck-Setup aufrufen
if (pPrt)
{
PrinterSetupDialog* pDlg = new PrinterSetupDialog(this );
pDlg->SetPrinter(pPrt);
pDlg->Execute();
delete pDlg;
GrabFocus();
aPrinterInfo.SetText(pPrt->GetName());
}
}
return 0;
}
// --------------------------------------------------------------------------
IMPL_LINK( SwEnvPrtPage, AlignHdl, ToolBox *, EMPTYARG )
{
if (aAlignBox.GetCurItemId())
{
for (sal_uInt16 i = ITM_HOR_LEFT; i <= ITM_VER_RGHT; i++)
aAlignBox.CheckItem(i, sal_False);
aAlignBox.CheckItem(aAlignBox.GetCurItemId(), sal_True);
}
else
{
// GetCurItemId() == 0 ist moeglich!
const SwEnvItem& rItem = (const SwEnvItem&) GetItemSet().Get(FN_ENVELOP);
aAlignBox.CheckItem((sal_uInt16) rItem.eAlign + ITM_HOR_LEFT, sal_True);
}
return 0;
}
// --------------------------------------------------------------------------
SfxTabPage* SwEnvPrtPage::Create(Window* pParent, const SfxItemSet& rSet)
{
return new SwEnvPrtPage(pParent, rSet);
}
// --------------------------------------------------------------------------
void SwEnvPrtPage::ActivatePage(const SfxItemSet&)
{
if (pPrt)
aPrinterInfo.SetText(pPrt->GetName());
}
// --------------------------------------------------------------------------
int SwEnvPrtPage::DeactivatePage(SfxItemSet* _pSet)
{
if( _pSet )
FillItemSet(*_pSet);
return SfxTabPage::LEAVE_PAGE;
}
// --------------------------------------------------------------------------
void SwEnvPrtPage::FillItem(SwEnvItem& rItem)
{
sal_uInt16 nID = 0;
for (sal_uInt16 i = ITM_HOR_LEFT; i <= ITM_VER_RGHT && !nID; i++)
if (aAlignBox.IsItemChecked(i))
nID = i;
rItem.eAlign = (SwEnvAlign) (nID - ITM_HOR_LEFT);
rItem.bPrintFromAbove = aTopButton.IsChecked();
rItem.lShiftRight = static_cast< sal_Int32 >(GetFldVal(aRightField));
rItem.lShiftDown = static_cast< sal_Int32 >(GetFldVal(aDownField ));
}
// --------------------------------------------------------------------------
sal_Bool SwEnvPrtPage::FillItemSet(SfxItemSet& rSet)
{
FillItem(GetParent()->aEnvItem);
rSet.Put(GetParent()->aEnvItem);
return sal_True;
}
// ----------------------------------------------------------------------------
void SwEnvPrtPage::Reset(const SfxItemSet& rSet)
{
// SfxItemSet aSet(rSet);
// aSet.Put(GetParent()->aEnvItem);
// Item auslesen
const SwEnvItem& rItem = (const SwEnvItem&) rSet.Get(FN_ENVELOP);
aAlignBox.CheckItem((sal_uInt16) rItem.eAlign + ITM_HOR_LEFT);
if (rItem.bPrintFromAbove)
aTopButton .Check();
else
aBottomButton.Check();
SetFldVal(aRightField, rItem.lShiftRight);
SetFldVal(aDownField , rItem.lShiftDown );
ActivatePage(rSet);
ClickHdl(&aTopButton);
}