1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_sw.hxx" 26 27 #ifdef SW_DLLIMPLEMENTATION 28 #undef SW_DLLIMPLEMENTATION 29 #endif 30 31 32 #include <vcl/print.hxx> 33 #include <svtools/prnsetup.hxx> 34 35 #include "swtypes.hxx" 36 #include "cmdid.h" 37 #include "envprt.hxx" 38 #include "envlop.hxx" 39 #include "uitool.hxx" 40 41 #include "envprt.hrc" 42 43 44 45 46 47 SwEnvPrtPage::SwEnvPrtPage(Window* pParent, const SfxItemSet& rSet) : 48 49 SfxTabPage(pParent, SW_RES(TP_ENV_PRT), rSet), 50 51 aAlignBox (this, SW_RES(BOX_ALIGN )), 52 aTopButton (this, SW_RES(BTN_TOP )), 53 aBottomButton(this, SW_RES(BTN_BOTTOM )), 54 aRightText (this, SW_RES(TXT_RIGHT )), 55 aRightField (this, SW_RES(FLD_RIGHT )), 56 aDownText (this, SW_RES(TXT_DOWN )), 57 aDownField (this, SW_RES(FLD_DOWN )), 58 aPrinterInfo (this, SW_RES(TXT_PRINTER)), 59 aNoNameFL (this, SW_RES(FL_NONAME )), 60 aPrinterFL (this, SW_RES(FL_PRINTER )), 61 aPrtSetup (this, SW_RES(BTN_PRTSETUP)) 62 63 { 64 FreeResource(); 65 SetExchangeSupport(); 66 67 // Metriken 68 FieldUnit eUnit = ::GetDfltMetric(sal_False); 69 SetMetric(aRightField, eUnit); 70 SetMetric(aDownField , eUnit); 71 72 // Handler installieren 73 aTopButton .SetClickHdl(LINK(this, SwEnvPrtPage, ClickHdl)); 74 aBottomButton.SetClickHdl(LINK(this, SwEnvPrtPage, ClickHdl)); 75 76 aPrtSetup .SetClickHdl(LINK(this, SwEnvPrtPage, ButtonHdl)); 77 78 // Bitmaps 79 aBottomButton.GetClickHdl().Call(&aBottomButton); 80 81 // ToolBox 82 Size aSz = aAlignBox.CalcWindowSizePixel(); 83 aAlignBox.SetSizePixel(aSz); 84 // aAlignBox.SetPosPixel(Point(aNoNameFL.GetPosPixel().X() + (aNoNameFL.GetSizePixel().Width() - aSz.Width()) / 2, aAlignBox.GetPosPixel().Y())); 85 aAlignBox.SetClickHdl(LINK(this, SwEnvPrtPage, AlignHdl)); 86 87 } 88 89 // -------------------------------------------------------------------------- 90 91 92 93 SwEnvPrtPage::~SwEnvPrtPage() 94 { 95 } 96 97 // -------------------------------------------------------------------------- 98 99 100 101 IMPL_LINK( SwEnvPrtPage, ClickHdl, Button *, EMPTYARG ) 102 { 103 sal_Bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); 104 if (aBottomButton.IsChecked()) 105 { 106 // Briefumschlaege von unten 107 aAlignBox.SetItemImage(ITM_HOR_LEFT, Bitmap(SW_RES(bHC ? BMP_HOR_LEFT_LOWER_H : BMP_HOR_LEFT_LOWER))); 108 aAlignBox.SetItemImage(ITM_HOR_CNTR, Bitmap(SW_RES(bHC ? BMP_HOR_CNTR_LOWER_H : BMP_HOR_CNTR_LOWER))); 109 aAlignBox.SetItemImage(ITM_HOR_RGHT, Bitmap(SW_RES(bHC ? BMP_HOR_RGHT_LOWER_H : BMP_HOR_RGHT_LOWER))); 110 aAlignBox.SetItemImage(ITM_VER_LEFT, Bitmap(SW_RES(bHC ? BMP_VER_LEFT_LOWER_H : BMP_VER_LEFT_LOWER))); 111 aAlignBox.SetItemImage(ITM_VER_CNTR, Bitmap(SW_RES(bHC ? BMP_VER_CNTR_LOWER_H : BMP_VER_CNTR_LOWER))); 112 aAlignBox.SetItemImage(ITM_VER_RGHT, Bitmap(SW_RES(bHC ? BMP_VER_RGHT_LOWER_H : BMP_VER_RGHT_LOWER))); 113 } 114 else 115 { 116 // Briefumschlaege von oben 117 aAlignBox.SetItemImage(ITM_HOR_LEFT, Bitmap(SW_RES(bHC ? BMP_HOR_LEFT_UPPER_H : BMP_HOR_LEFT_UPPER))); 118 aAlignBox.SetItemImage(ITM_HOR_CNTR, Bitmap(SW_RES(bHC ? BMP_HOR_CNTR_UPPER_H : BMP_HOR_CNTR_UPPER))); 119 aAlignBox.SetItemImage(ITM_HOR_RGHT, Bitmap(SW_RES(bHC ? BMP_HOR_RGHT_UPPER_H : BMP_HOR_RGHT_UPPER))); 120 aAlignBox.SetItemImage(ITM_VER_LEFT, Bitmap(SW_RES(bHC ? BMP_VER_LEFT_UPPER_H : BMP_VER_LEFT_UPPER))); 121 aAlignBox.SetItemImage(ITM_VER_CNTR, Bitmap(SW_RES(bHC ? BMP_VER_CNTR_UPPER_H : BMP_VER_CNTR_UPPER))); 122 aAlignBox.SetItemImage(ITM_VER_RGHT, Bitmap(SW_RES(bHC ? BMP_VER_RGHT_UPPER_H : BMP_VER_RGHT_UPPER))); 123 } 124 return 0; 125 } 126 127 // -------------------------------------------------------------------------- 128 129 130 131 IMPL_LINK( SwEnvPrtPage, ButtonHdl, Button *, pBtn ) 132 { 133 if (pBtn == &aPrtSetup) 134 { 135 // Druck-Setup aufrufen 136 if (pPrt) 137 { 138 PrinterSetupDialog* pDlg = new PrinterSetupDialog(this ); 139 pDlg->SetPrinter(pPrt); 140 pDlg->Execute(); 141 delete pDlg; 142 GrabFocus(); 143 aPrinterInfo.SetText(pPrt->GetName()); 144 } 145 } 146 return 0; 147 } 148 149 // -------------------------------------------------------------------------- 150 151 152 153 IMPL_LINK( SwEnvPrtPage, AlignHdl, ToolBox *, EMPTYARG ) 154 { 155 if (aAlignBox.GetCurItemId()) 156 { 157 for (sal_uInt16 i = ITM_HOR_LEFT; i <= ITM_VER_RGHT; i++) 158 aAlignBox.CheckItem(i, sal_False); 159 aAlignBox.CheckItem(aAlignBox.GetCurItemId(), sal_True); 160 } 161 else 162 { 163 // GetCurItemId() == 0 ist moeglich! 164 const SwEnvItem& rItem = (const SwEnvItem&) GetItemSet().Get(FN_ENVELOP); 165 aAlignBox.CheckItem((sal_uInt16) rItem.eAlign + ITM_HOR_LEFT, sal_True); 166 } 167 return 0; 168 } 169 170 // -------------------------------------------------------------------------- 171 172 173 174 SfxTabPage* SwEnvPrtPage::Create(Window* pParent, const SfxItemSet& rSet) 175 { 176 return new SwEnvPrtPage(pParent, rSet); 177 } 178 179 // -------------------------------------------------------------------------- 180 181 182 183 void SwEnvPrtPage::ActivatePage(const SfxItemSet&) 184 { 185 if (pPrt) 186 aPrinterInfo.SetText(pPrt->GetName()); 187 } 188 189 // -------------------------------------------------------------------------- 190 191 192 193 int SwEnvPrtPage::DeactivatePage(SfxItemSet* _pSet) 194 { 195 if( _pSet ) 196 FillItemSet(*_pSet); 197 return SfxTabPage::LEAVE_PAGE; 198 } 199 200 // -------------------------------------------------------------------------- 201 202 203 204 void SwEnvPrtPage::FillItem(SwEnvItem& rItem) 205 { 206 sal_uInt16 nID = 0; 207 for (sal_uInt16 i = ITM_HOR_LEFT; i <= ITM_VER_RGHT && !nID; i++) 208 if (aAlignBox.IsItemChecked(i)) 209 nID = i; 210 211 rItem.eAlign = (SwEnvAlign) (nID - ITM_HOR_LEFT); 212 rItem.bPrintFromAbove = aTopButton.IsChecked(); 213 rItem.lShiftRight = static_cast< sal_Int32 >(GetFldVal(aRightField)); 214 rItem.lShiftDown = static_cast< sal_Int32 >(GetFldVal(aDownField )); 215 } 216 217 // -------------------------------------------------------------------------- 218 219 220 221 sal_Bool SwEnvPrtPage::FillItemSet(SfxItemSet& rSet) 222 { 223 FillItem(GetParent()->aEnvItem); 224 rSet.Put(GetParent()->aEnvItem); 225 return sal_True; 226 } 227 228 // ---------------------------------------------------------------------------- 229 230 231 232 void SwEnvPrtPage::Reset(const SfxItemSet& rSet) 233 { 234 // SfxItemSet aSet(rSet); 235 // aSet.Put(GetParent()->aEnvItem); 236 237 // Item auslesen 238 const SwEnvItem& rItem = (const SwEnvItem&) rSet.Get(FN_ENVELOP); 239 aAlignBox.CheckItem((sal_uInt16) rItem.eAlign + ITM_HOR_LEFT); 240 241 if (rItem.bPrintFromAbove) 242 aTopButton .Check(); 243 else 244 aBottomButton.Check(); 245 246 SetFldVal(aRightField, rItem.lShiftRight); 247 SetFldVal(aDownField , rItem.lShiftDown ); 248 249 ActivatePage(rSet); 250 ClickHdl(&aTopButton); 251 } 252 253 254 255 256