xref: /AOO41X/main/sw/source/ui/envelp/envprt.cxx (revision efeef26f81c84063fb0a91bde3856d4a51172d90)
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 
SwEnvPrtPage(Window * pParent,const SfxItemSet & rSet)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 
~SwEnvPrtPage()93 SwEnvPrtPage::~SwEnvPrtPage()
94 {
95 }
96 
97 // --------------------------------------------------------------------------
98 
99 
100 
IMPL_LINK(SwEnvPrtPage,ClickHdl,Button *,EMPTYARG)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 
IMPL_LINK(SwEnvPrtPage,ButtonHdl,Button *,pBtn)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 
IMPL_LINK(SwEnvPrtPage,AlignHdl,ToolBox *,EMPTYARG)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 
Create(Window * pParent,const SfxItemSet & rSet)174 SfxTabPage* SwEnvPrtPage::Create(Window* pParent, const SfxItemSet& rSet)
175 {
176     return new SwEnvPrtPage(pParent, rSet);
177 }
178 
179 // --------------------------------------------------------------------------
180 
181 
182 
ActivatePage(const SfxItemSet &)183 void SwEnvPrtPage::ActivatePage(const SfxItemSet&)
184 {
185     if (pPrt)
186         aPrinterInfo.SetText(pPrt->GetName());
187 }
188 
189 // --------------------------------------------------------------------------
190 
191 
192 
DeactivatePage(SfxItemSet * _pSet)193 int SwEnvPrtPage::DeactivatePage(SfxItemSet* _pSet)
194 {
195     if( _pSet )
196         FillItemSet(*_pSet);
197     return SfxTabPage::LEAVE_PAGE;
198 }
199 
200 // --------------------------------------------------------------------------
201 
202 
203 
FillItem(SwEnvItem & rItem)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 
FillItemSet(SfxItemSet & rSet)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 
Reset(const SfxItemSet & rSet)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