1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_cui.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski #include <editeng/unolingu.hxx>
29*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
30*b1cdbd2cSJim Jagielski #include <unotools/pathoptions.hxx>
31*b1cdbd2cSJim Jagielski #include <svtools/ctrltool.hxx>
32*b1cdbd2cSJim Jagielski #include <svl/sfontitm.hxx>
33*b1cdbd2cSJim Jagielski #include <sfx2/printer.hxx>
34*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
35*b1cdbd2cSJim Jagielski #include <sfx2/viewsh.hxx>
36*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
37*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
38*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
39*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
40*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
41*b1cdbd2cSJim Jagielski #include <svtools/unitconv.hxx>
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski #define _SVX_CHARDLG_CXX
44*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski #include <cuires.hrc>
47*b1cdbd2cSJim Jagielski #include "chardlg.hrc"
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski #include <svx/xtable.hxx> // XColorList
50*b1cdbd2cSJim Jagielski #include "chardlg.hxx"
51*b1cdbd2cSJim Jagielski #include "editeng/fontitem.hxx"
52*b1cdbd2cSJim Jagielski #include <editeng/postitem.hxx>
53*b1cdbd2cSJim Jagielski #include <editeng/udlnitem.hxx>
54*b1cdbd2cSJim Jagielski #include <editeng/crsditem.hxx>
55*b1cdbd2cSJim Jagielski #include <editeng/cntritem.hxx>
56*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx>
57*b1cdbd2cSJim Jagielski #include <editeng/wghtitem.hxx>
58*b1cdbd2cSJim Jagielski #include <editeng/fhgtitem.hxx>
59*b1cdbd2cSJim Jagielski #include <editeng/shdditem.hxx>
60*b1cdbd2cSJim Jagielski #include <editeng/escpitem.hxx>
61*b1cdbd2cSJim Jagielski #include <editeng/prszitem.hxx>
62*b1cdbd2cSJim Jagielski #include <editeng/wrlmitem.hxx>
63*b1cdbd2cSJim Jagielski #include <editeng/cmapitem.hxx>
64*b1cdbd2cSJim Jagielski #include <editeng/kernitem.hxx>
65*b1cdbd2cSJim Jagielski #include <editeng/blnkitem.hxx>
66*b1cdbd2cSJim Jagielski #include "editeng/flstitem.hxx"
67*b1cdbd2cSJim Jagielski #include <editeng/akrnitem.hxx>
68*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
69*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx>
70*b1cdbd2cSJim Jagielski #include "svx/drawitem.hxx"
71*b1cdbd2cSJim Jagielski #include "svx/dlgutil.hxx"
72*b1cdbd2cSJim Jagielski #include <dialmgr.hxx>
73*b1cdbd2cSJim Jagielski #include "svx/htmlmode.hxx"
74*b1cdbd2cSJim Jagielski #include "cuicharmap.hxx"
75*b1cdbd2cSJim Jagielski #include "chardlg.h"
76*b1cdbd2cSJim Jagielski #include <editeng/emphitem.hxx>
77*b1cdbd2cSJim Jagielski #include <editeng/charreliefitem.hxx>
78*b1cdbd2cSJim Jagielski #include <editeng/twolinesitem.hxx>
79*b1cdbd2cSJim Jagielski #include <editeng/charhiddenitem.hxx>
80*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
81*b1cdbd2cSJim Jagielski #include <editeng/charscaleitem.hxx>
82*b1cdbd2cSJim Jagielski #include <editeng/charrotateitem.hxx>
83*b1cdbd2cSJim Jagielski #include <svx/svxdlg.hxx> //CHINA001
84*b1cdbd2cSJim Jagielski #include <cuires.hrc> //CHINA001
85*b1cdbd2cSJim Jagielski #include <svl/intitem.hxx> //CHINA001
86*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx> //CHINA001
87*b1cdbd2cSJim Jagielski #include "svx/flagsdef.hxx" //CHINA001
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski // define ----------------------------------------------------------------
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski #define ISITEMSET rSet.GetItemState(nWhich)>=SFX_ITEM_DEFAULT
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski #define CLEARTITEM rSet.InvalidateItem(nWhich)
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski #define LW_NORMAL 0
98*b1cdbd2cSJim Jagielski #define LW_GESPERRT 1
99*b1cdbd2cSJim Jagielski #define LW_SCHMAL 2
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski // static ----------------------------------------------------------------
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski static sal_uInt16 pNameRanges[] =
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_FONT,
106*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_WEIGHT,
107*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_FONTHEIGHT,
108*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_FONTHEIGHT,
109*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_COLOR,
110*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_COLOR,
111*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_LANGUAGE,
112*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_LANGUAGE,
113*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_CJK_FONT,
114*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_CJK_WEIGHT,
115*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_CTL_FONT,
116*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_CTL_WEIGHT,
117*b1cdbd2cSJim Jagielski 0
118*b1cdbd2cSJim Jagielski };
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski static sal_uInt16 pEffectsRanges[] =
121*b1cdbd2cSJim Jagielski {
122*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_SHADOWED,
123*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_UNDERLINE,
124*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_COLOR,
125*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_COLOR,
126*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_CASEMAP,
127*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_CASEMAP,
128*b1cdbd2cSJim Jagielski SID_ATTR_FLASH,
129*b1cdbd2cSJim Jagielski SID_ATTR_FLASH,
130*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_EMPHASISMARK,
131*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_EMPHASISMARK,
132*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_RELIEF,
133*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_RELIEF,
134*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_HIDDEN,
135*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_HIDDEN,
136*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_OVERLINE,
137*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_OVERLINE,
138*b1cdbd2cSJim Jagielski 0
139*b1cdbd2cSJim Jagielski };
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski static sal_uInt16 pPositionRanges[] =
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_KERNING,
144*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_KERNING,
145*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_ESCAPEMENT,
146*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_ESCAPEMENT,
147*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_AUTOKERN,
148*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_AUTOKERN,
149*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_ROTATED,
150*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_SCALEWIDTH,
151*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
152*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
153*b1cdbd2cSJim Jagielski 0
154*b1cdbd2cSJim Jagielski };
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielski static sal_uInt16 pTwoLinesRanges[] =
157*b1cdbd2cSJim Jagielski {
158*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_TWO_LINES,
159*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_TWO_LINES,
160*b1cdbd2cSJim Jagielski 0
161*b1cdbd2cSJim Jagielski };
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski // C-Funktion ------------------------------------------------------------
164*b1cdbd2cSJim Jagielski
StateToAttr(TriState aState)165*b1cdbd2cSJim Jagielski inline sal_Bool StateToAttr( TriState aState )
166*b1cdbd2cSJim Jagielski {
167*b1cdbd2cSJim Jagielski return ( STATE_CHECK == aState );
168*b1cdbd2cSJim Jagielski }
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski // class SvxCharBasePage -------------------------------------------------
171*b1cdbd2cSJim Jagielski
GetPreviewFont()172*b1cdbd2cSJim Jagielski inline SvxFont& SvxCharBasePage::GetPreviewFont()
173*b1cdbd2cSJim Jagielski {
174*b1cdbd2cSJim Jagielski return m_aPreviewWin.GetFont();
175*b1cdbd2cSJim Jagielski }
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
178*b1cdbd2cSJim Jagielski
GetPreviewCJKFont()179*b1cdbd2cSJim Jagielski inline SvxFont& SvxCharBasePage::GetPreviewCJKFont()
180*b1cdbd2cSJim Jagielski {
181*b1cdbd2cSJim Jagielski return m_aPreviewWin.GetCJKFont();
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
184*b1cdbd2cSJim Jagielski
GetPreviewCTLFont()185*b1cdbd2cSJim Jagielski inline SvxFont& SvxCharBasePage::GetPreviewCTLFont()
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski return m_aPreviewWin.GetCTLFont();
188*b1cdbd2cSJim Jagielski }
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
191*b1cdbd2cSJim Jagielski
SvxCharBasePage(Window * pParent,const ResId & rResId,const SfxItemSet & rItemset,sal_uInt16 nResIdPrewievWin,sal_uInt16 nResIdFontTypeFT)192*b1cdbd2cSJim Jagielski SvxCharBasePage::SvxCharBasePage( Window* pParent, const ResId& rResId, const SfxItemSet& rItemset,
193*b1cdbd2cSJim Jagielski sal_uInt16 nResIdPrewievWin, sal_uInt16 nResIdFontTypeFT ):
194*b1cdbd2cSJim Jagielski SfxTabPage( pParent, rResId, rItemset ),
195*b1cdbd2cSJim Jagielski m_aPreviewWin( this, ResId( nResIdPrewievWin, *rResId.GetResMgr() ) ),
196*b1cdbd2cSJim Jagielski m_aFontTypeFT( this, ResId( nResIdFontTypeFT, *rResId.GetResMgr() ) ),
197*b1cdbd2cSJim Jagielski m_bPreviewBackgroundToCharacter( sal_False )
198*b1cdbd2cSJim Jagielski {
199*b1cdbd2cSJim Jagielski }
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
202*b1cdbd2cSJim Jagielski
~SvxCharBasePage()203*b1cdbd2cSJim Jagielski SvxCharBasePage::~SvxCharBasePage()
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski }
206*b1cdbd2cSJim Jagielski
207*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski //void SvxCharBasePage::SetPrevFontAttributes( const SfxItemSet& rSet )
ActivatePage(const SfxItemSet & rSet)210*b1cdbd2cSJim Jagielski void SvxCharBasePage::ActivatePage( const SfxItemSet& rSet )
211*b1cdbd2cSJim Jagielski {
212*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
213*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
214*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
215*b1cdbd2cSJim Jagielski sal_uInt16 nWhich;
216*b1cdbd2cSJim Jagielski
217*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_CHAR_DLG_PREVIEW_STRING );
218*b1cdbd2cSJim Jagielski if( ISITEMSET )
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski const SfxStringItem& rItem = ( SfxStringItem& ) rSet.Get( nWhich );
221*b1cdbd2cSJim Jagielski ::rtl::OUString aString = rItem.GetValue();
222*b1cdbd2cSJim Jagielski if( aString.getLength() != 0 )
223*b1cdbd2cSJim Jagielski m_aPreviewWin.SetPreviewText( aString );
224*b1cdbd2cSJim Jagielski else
225*b1cdbd2cSJim Jagielski m_aPreviewWin.SetFontNameAsPreviewText();
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski
228*b1cdbd2cSJim Jagielski // Underline
229*b1cdbd2cSJim Jagielski FontUnderline eUnderline;
230*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE );
231*b1cdbd2cSJim Jagielski if( ISITEMSET )
232*b1cdbd2cSJim Jagielski {
233*b1cdbd2cSJim Jagielski const SvxUnderlineItem& rItem = ( SvxUnderlineItem& ) rSet.Get( nWhich );
234*b1cdbd2cSJim Jagielski eUnderline = ( FontUnderline ) rItem.GetValue();
235*b1cdbd2cSJim Jagielski m_aPreviewWin.SetTextLineColor( rItem.GetColor() );
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski else
238*b1cdbd2cSJim Jagielski eUnderline = UNDERLINE_NONE;
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski rFont.SetUnderline( eUnderline );
241*b1cdbd2cSJim Jagielski rCJKFont.SetUnderline( eUnderline );
242*b1cdbd2cSJim Jagielski rCTLFont.SetUnderline( eUnderline );
243*b1cdbd2cSJim Jagielski
244*b1cdbd2cSJim Jagielski // Overline
245*b1cdbd2cSJim Jagielski FontUnderline eOverline;
246*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_OVERLINE );
247*b1cdbd2cSJim Jagielski if( ISITEMSET )
248*b1cdbd2cSJim Jagielski {
249*b1cdbd2cSJim Jagielski const SvxOverlineItem& rItem = ( SvxOverlineItem& ) rSet.Get( nWhich );
250*b1cdbd2cSJim Jagielski eOverline = ( FontUnderline ) rItem.GetValue();
251*b1cdbd2cSJim Jagielski m_aPreviewWin.SetOverlineColor( rItem.GetColor() );
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski else
254*b1cdbd2cSJim Jagielski eOverline = UNDERLINE_NONE;
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski rFont.SetOverline( eOverline );
257*b1cdbd2cSJim Jagielski rCJKFont.SetOverline( eOverline );
258*b1cdbd2cSJim Jagielski rCTLFont.SetOverline( eOverline );
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielski // Strikeout
261*b1cdbd2cSJim Jagielski FontStrikeout eStrikeout;
262*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT );
263*b1cdbd2cSJim Jagielski if( ISITEMSET )
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski const SvxCrossedOutItem& rItem = ( SvxCrossedOutItem& ) rSet.Get( nWhich );
266*b1cdbd2cSJim Jagielski eStrikeout = ( FontStrikeout ) rItem.GetValue();
267*b1cdbd2cSJim Jagielski }
268*b1cdbd2cSJim Jagielski else
269*b1cdbd2cSJim Jagielski eStrikeout = STRIKEOUT_NONE;
270*b1cdbd2cSJim Jagielski
271*b1cdbd2cSJim Jagielski rFont.SetStrikeout( eStrikeout );
272*b1cdbd2cSJim Jagielski rCJKFont.SetStrikeout( eStrikeout );
273*b1cdbd2cSJim Jagielski rCTLFont.SetStrikeout( eStrikeout );
274*b1cdbd2cSJim Jagielski
275*b1cdbd2cSJim Jagielski // WordLineMode
276*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE );
277*b1cdbd2cSJim Jagielski if( ISITEMSET )
278*b1cdbd2cSJim Jagielski {
279*b1cdbd2cSJim Jagielski const SvxWordLineModeItem& rItem = ( SvxWordLineModeItem& ) rSet.Get( nWhich );
280*b1cdbd2cSJim Jagielski rFont.SetWordLineMode( rItem.GetValue() );
281*b1cdbd2cSJim Jagielski rCJKFont.SetWordLineMode( rItem.GetValue() );
282*b1cdbd2cSJim Jagielski rCTLFont.SetWordLineMode( rItem.GetValue() );
283*b1cdbd2cSJim Jagielski }
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski // Emphasis
286*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_EMPHASISMARK );
287*b1cdbd2cSJim Jagielski if( ISITEMSET )
288*b1cdbd2cSJim Jagielski {
289*b1cdbd2cSJim Jagielski const SvxEmphasisMarkItem& rItem = ( SvxEmphasisMarkItem& ) rSet.Get( nWhich );
290*b1cdbd2cSJim Jagielski FontEmphasisMark eMark = rItem.GetEmphasisMark();
291*b1cdbd2cSJim Jagielski rFont.SetEmphasisMark( eMark );
292*b1cdbd2cSJim Jagielski rCJKFont.SetEmphasisMark( eMark );
293*b1cdbd2cSJim Jagielski rCTLFont.SetEmphasisMark( eMark );
294*b1cdbd2cSJim Jagielski }
295*b1cdbd2cSJim Jagielski
296*b1cdbd2cSJim Jagielski // Relief
297*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_RELIEF );
298*b1cdbd2cSJim Jagielski if( ISITEMSET )
299*b1cdbd2cSJim Jagielski {
300*b1cdbd2cSJim Jagielski const SvxCharReliefItem& rItem = ( SvxCharReliefItem& ) rSet.Get( nWhich );
301*b1cdbd2cSJim Jagielski FontRelief eFontRelief = ( FontRelief ) rItem.GetValue();
302*b1cdbd2cSJim Jagielski rFont.SetRelief( eFontRelief );
303*b1cdbd2cSJim Jagielski rCJKFont.SetRelief( eFontRelief );
304*b1cdbd2cSJim Jagielski rCTLFont.SetRelief( eFontRelief );
305*b1cdbd2cSJim Jagielski }
306*b1cdbd2cSJim Jagielski
307*b1cdbd2cSJim Jagielski // Effects
308*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP );
309*b1cdbd2cSJim Jagielski if( ISITEMSET )
310*b1cdbd2cSJim Jagielski {
311*b1cdbd2cSJim Jagielski const SvxCaseMapItem& rItem = ( SvxCaseMapItem& ) rSet.Get( nWhich );
312*b1cdbd2cSJim Jagielski SvxCaseMap eCaseMap = ( SvxCaseMap ) rItem.GetValue();
313*b1cdbd2cSJim Jagielski rFont.SetCaseMap( eCaseMap );
314*b1cdbd2cSJim Jagielski rCJKFont.SetCaseMap( eCaseMap );
315*b1cdbd2cSJim Jagielski // #i78474# small caps do not exist in CTL fonts
316*b1cdbd2cSJim Jagielski rCTLFont.SetCaseMap( eCaseMap == SVX_CASEMAP_KAPITAELCHEN ? SVX_CASEMAP_NOT_MAPPED : eCaseMap );
317*b1cdbd2cSJim Jagielski }
318*b1cdbd2cSJim Jagielski
319*b1cdbd2cSJim Jagielski // Outline
320*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CONTOUR );
321*b1cdbd2cSJim Jagielski if( ISITEMSET )
322*b1cdbd2cSJim Jagielski {
323*b1cdbd2cSJim Jagielski const SvxContourItem& rItem = ( SvxContourItem& ) rSet.Get( nWhich );
324*b1cdbd2cSJim Jagielski sal_Bool bOutline = rItem.GetValue();
325*b1cdbd2cSJim Jagielski rFont.SetOutline( bOutline );
326*b1cdbd2cSJim Jagielski rCJKFont.SetOutline( bOutline );
327*b1cdbd2cSJim Jagielski rCTLFont.SetOutline( bOutline );
328*b1cdbd2cSJim Jagielski }
329*b1cdbd2cSJim Jagielski
330*b1cdbd2cSJim Jagielski // Shadow
331*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_SHADOWED );
332*b1cdbd2cSJim Jagielski if( ISITEMSET )
333*b1cdbd2cSJim Jagielski {
334*b1cdbd2cSJim Jagielski const SvxShadowedItem& rItem = ( SvxShadowedItem& ) rSet.Get( nWhich );
335*b1cdbd2cSJim Jagielski sal_Bool bShadow = rItem.GetValue();
336*b1cdbd2cSJim Jagielski rFont.SetShadow( bShadow );
337*b1cdbd2cSJim Jagielski rCJKFont.SetShadow( bShadow );
338*b1cdbd2cSJim Jagielski rCTLFont.SetShadow( bShadow );
339*b1cdbd2cSJim Jagielski }
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielski // Background
342*b1cdbd2cSJim Jagielski sal_Bool bTransparent;
343*b1cdbd2cSJim Jagielski nWhich = GetWhich( m_bPreviewBackgroundToCharacter ? SID_ATTR_BRUSH : SID_ATTR_BRUSH_CHAR );
344*b1cdbd2cSJim Jagielski if( ISITEMSET )
345*b1cdbd2cSJim Jagielski {
346*b1cdbd2cSJim Jagielski const SvxBrushItem& rBrush = ( SvxBrushItem& ) rSet.Get( nWhich );
347*b1cdbd2cSJim Jagielski const Color& rColor = rBrush.GetColor();
348*b1cdbd2cSJim Jagielski bTransparent = rColor.GetTransparency() > 0;
349*b1cdbd2cSJim Jagielski rFont.SetFillColor( rColor );
350*b1cdbd2cSJim Jagielski rCJKFont.SetFillColor( rColor );
351*b1cdbd2cSJim Jagielski rCTLFont.SetFillColor( rColor );
352*b1cdbd2cSJim Jagielski }
353*b1cdbd2cSJim Jagielski else
354*b1cdbd2cSJim Jagielski bTransparent = sal_True;
355*b1cdbd2cSJim Jagielski
356*b1cdbd2cSJim Jagielski rFont.SetTransparent( bTransparent );
357*b1cdbd2cSJim Jagielski rCJKFont.SetTransparent( bTransparent );
358*b1cdbd2cSJim Jagielski rCTLFont.SetTransparent( bTransparent );
359*b1cdbd2cSJim Jagielski
360*b1cdbd2cSJim Jagielski Color aBackCol( COL_TRANSPARENT );
361*b1cdbd2cSJim Jagielski if( !m_bPreviewBackgroundToCharacter )
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_BRUSH );
364*b1cdbd2cSJim Jagielski if( ISITEMSET )
365*b1cdbd2cSJim Jagielski {
366*b1cdbd2cSJim Jagielski const SvxBrushItem& rBrush = ( SvxBrushItem& ) rSet.Get( nWhich );
367*b1cdbd2cSJim Jagielski if( GPOS_NONE == rBrush.GetGraphicPos() )
368*b1cdbd2cSJim Jagielski aBackCol = rBrush.GetColor();
369*b1cdbd2cSJim Jagielski }
370*b1cdbd2cSJim Jagielski }
371*b1cdbd2cSJim Jagielski m_aPreviewWin.SetBackColor( aBackCol );
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski // Font
374*b1cdbd2cSJim Jagielski SetPrevFont( rSet, SID_ATTR_CHAR_FONT, rFont );
375*b1cdbd2cSJim Jagielski SetPrevFont( rSet, SID_ATTR_CHAR_CJK_FONT, rCJKFont );
376*b1cdbd2cSJim Jagielski SetPrevFont( rSet, SID_ATTR_CHAR_CTL_FONT, rCTLFont );
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski // Style
379*b1cdbd2cSJim Jagielski SetPrevFontStyle( rSet, SID_ATTR_CHAR_POSTURE, SID_ATTR_CHAR_WEIGHT, rFont );
380*b1cdbd2cSJim Jagielski SetPrevFontStyle( rSet, SID_ATTR_CHAR_CJK_POSTURE, SID_ATTR_CHAR_CJK_WEIGHT, rCJKFont );
381*b1cdbd2cSJim Jagielski SetPrevFontStyle( rSet, SID_ATTR_CHAR_CTL_POSTURE, SID_ATTR_CHAR_CTL_WEIGHT, rCTLFont );
382*b1cdbd2cSJim Jagielski
383*b1cdbd2cSJim Jagielski // Size
384*b1cdbd2cSJim Jagielski SetPrevFontSize( rSet, SID_ATTR_CHAR_FONTHEIGHT, rFont );
385*b1cdbd2cSJim Jagielski SetPrevFontSize( rSet, SID_ATTR_CHAR_CJK_FONTHEIGHT, rCJKFont );
386*b1cdbd2cSJim Jagielski SetPrevFontSize( rSet, SID_ATTR_CHAR_CTL_FONTHEIGHT, rCTLFont );
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim Jagielski // Color
389*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
390*b1cdbd2cSJim Jagielski if( ISITEMSET )
391*b1cdbd2cSJim Jagielski {
392*b1cdbd2cSJim Jagielski const SvxColorItem& rItem = ( SvxColorItem& ) rSet.Get( nWhich );
393*b1cdbd2cSJim Jagielski Color aCol( rItem.GetValue() );
394*b1cdbd2cSJim Jagielski rFont.SetColor( aCol );
395*b1cdbd2cSJim Jagielski rCJKFont.SetColor( aCol );
396*b1cdbd2cSJim Jagielski rCTLFont.SetColor( aCol );
397*b1cdbd2cSJim Jagielski
398*b1cdbd2cSJim Jagielski m_aPreviewWin.AutoCorrectFontColor(); // handle color COL_AUTO
399*b1cdbd2cSJim Jagielski }
400*b1cdbd2cSJim Jagielski
401*b1cdbd2cSJim Jagielski // Kerning
402*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_KERNING );
403*b1cdbd2cSJim Jagielski if( ISITEMSET )
404*b1cdbd2cSJim Jagielski {
405*b1cdbd2cSJim Jagielski const SvxKerningItem& rItem = ( SvxKerningItem& ) rSet.Get( nWhich );
406*b1cdbd2cSJim Jagielski short nKern = ( short )
407*b1cdbd2cSJim Jagielski LogicToLogic( rItem.GetValue(), ( MapUnit ) rSet.GetPool()->GetMetric( nWhich ), MAP_TWIP );
408*b1cdbd2cSJim Jagielski rFont.SetFixKerning( nKern );
409*b1cdbd2cSJim Jagielski rCJKFont.SetFixKerning( nKern );
410*b1cdbd2cSJim Jagielski rCTLFont.SetFixKerning( nKern );
411*b1cdbd2cSJim Jagielski }
412*b1cdbd2cSJim Jagielski
413*b1cdbd2cSJim Jagielski // Escapement
414*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT );
415*b1cdbd2cSJim Jagielski const sal_uInt8 nProp = 100;
416*b1cdbd2cSJim Jagielski short nEsc;
417*b1cdbd2cSJim Jagielski sal_uInt8 nEscProp;
418*b1cdbd2cSJim Jagielski if( ISITEMSET )
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski const SvxEscapementItem& rItem = ( SvxEscapementItem& ) rSet.Get( nWhich );
421*b1cdbd2cSJim Jagielski nEsc = rItem.GetEsc();
422*b1cdbd2cSJim Jagielski nEscProp = rItem.GetProp();
423*b1cdbd2cSJim Jagielski
424*b1cdbd2cSJim Jagielski if( nEsc == DFLT_ESC_AUTO_SUPER )
425*b1cdbd2cSJim Jagielski nEsc = DFLT_ESC_SUPER;
426*b1cdbd2cSJim Jagielski else if( nEsc == DFLT_ESC_AUTO_SUB )
427*b1cdbd2cSJim Jagielski nEsc = DFLT_ESC_SUB;
428*b1cdbd2cSJim Jagielski }
429*b1cdbd2cSJim Jagielski else
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski nEsc = 0;
432*b1cdbd2cSJim Jagielski nEscProp = 100;
433*b1cdbd2cSJim Jagielski }
434*b1cdbd2cSJim Jagielski
435*b1cdbd2cSJim Jagielski SetPrevFontEscapement( nProp, nEscProp, nEsc );
436*b1cdbd2cSJim Jagielski
437*b1cdbd2cSJim Jagielski // Font width scale
438*b1cdbd2cSJim Jagielski SetPrevFontWidthScale( rSet );
439*b1cdbd2cSJim Jagielski
440*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
441*b1cdbd2cSJim Jagielski }
442*b1cdbd2cSJim Jagielski
443*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
444*b1cdbd2cSJim Jagielski
SetPrevFontSize(const SfxItemSet & rSet,sal_uInt16 nSlot,SvxFont & rFont)445*b1cdbd2cSJim Jagielski void SvxCharBasePage::SetPrevFontSize( const SfxItemSet& rSet, sal_uInt16 nSlot, SvxFont& rFont )
446*b1cdbd2cSJim Jagielski {
447*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( nSlot );
448*b1cdbd2cSJim Jagielski long nH;
449*b1cdbd2cSJim Jagielski if( rSet.GetItemState( nWhich ) >= SFX_ITEM_SET )
450*b1cdbd2cSJim Jagielski {
451*b1cdbd2cSJim Jagielski nH = LogicToLogic( ( ( SvxFontHeightItem& ) rSet.Get( nWhich ) ).GetHeight(),
452*b1cdbd2cSJim Jagielski ( MapUnit ) rSet.GetPool()->GetMetric( nWhich ),
453*b1cdbd2cSJim Jagielski MAP_TWIP );
454*b1cdbd2cSJim Jagielski }
455*b1cdbd2cSJim Jagielski else
456*b1cdbd2cSJim Jagielski nH = 240; // as default 12pt
457*b1cdbd2cSJim Jagielski
458*b1cdbd2cSJim Jagielski rFont.SetSize( Size( 0, nH ) );
459*b1cdbd2cSJim Jagielski }
460*b1cdbd2cSJim Jagielski
461*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
462*b1cdbd2cSJim Jagielski
SetPrevFont(const SfxItemSet & rSet,sal_uInt16 nSlot,SvxFont & rFont)463*b1cdbd2cSJim Jagielski void SvxCharBasePage::SetPrevFont( const SfxItemSet& rSet, sal_uInt16 nSlot, SvxFont& rFont )
464*b1cdbd2cSJim Jagielski {
465*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( nSlot );
466*b1cdbd2cSJim Jagielski if( ISITEMSET )
467*b1cdbd2cSJim Jagielski {
468*b1cdbd2cSJim Jagielski const SvxFontItem& rFontItem = ( SvxFontItem& ) rSet.Get( nWhich );
469*b1cdbd2cSJim Jagielski rFont.SetFamily( rFontItem.GetFamily() );
470*b1cdbd2cSJim Jagielski rFont.SetName( rFontItem.GetFamilyName() );
471*b1cdbd2cSJim Jagielski rFont.SetPitch( rFontItem.GetPitch() );
472*b1cdbd2cSJim Jagielski rFont.SetCharSet( rFontItem.GetCharSet() );
473*b1cdbd2cSJim Jagielski rFont.SetStyleName( rFontItem.GetStyleName() );
474*b1cdbd2cSJim Jagielski }
475*b1cdbd2cSJim Jagielski }
476*b1cdbd2cSJim Jagielski
477*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
478*b1cdbd2cSJim Jagielski
SetPrevFontStyle(const SfxItemSet & rSet,sal_uInt16 nPosture,sal_uInt16 nWeight,SvxFont & rFont)479*b1cdbd2cSJim Jagielski void SvxCharBasePage::SetPrevFontStyle( const SfxItemSet& rSet, sal_uInt16 nPosture, sal_uInt16 nWeight, SvxFont& rFont )
480*b1cdbd2cSJim Jagielski {
481*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( nPosture );
482*b1cdbd2cSJim Jagielski if( ISITEMSET )
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski const SvxPostureItem& rItem = ( SvxPostureItem& ) rSet.Get( nWhich );
485*b1cdbd2cSJim Jagielski rFont.SetItalic( ( FontItalic ) rItem.GetValue() != ITALIC_NONE ? ITALIC_NORMAL : ITALIC_NONE );
486*b1cdbd2cSJim Jagielski }
487*b1cdbd2cSJim Jagielski
488*b1cdbd2cSJim Jagielski nWhich = GetWhich( nWeight );
489*b1cdbd2cSJim Jagielski if( ISITEMSET )
490*b1cdbd2cSJim Jagielski {
491*b1cdbd2cSJim Jagielski SvxWeightItem& rItem = ( SvxWeightItem& ) rSet.Get( nWhich );
492*b1cdbd2cSJim Jagielski rFont.SetWeight( ( FontWeight ) rItem.GetValue() != WEIGHT_NORMAL ? WEIGHT_BOLD : WEIGHT_NORMAL );
493*b1cdbd2cSJim Jagielski }
494*b1cdbd2cSJim Jagielski }
495*b1cdbd2cSJim Jagielski
496*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
497*b1cdbd2cSJim Jagielski
SetPrevFontWidthScale(const SfxItemSet & rSet)498*b1cdbd2cSJim Jagielski void SvxCharBasePage::SetPrevFontWidthScale( const SfxItemSet& rSet )
499*b1cdbd2cSJim Jagielski {
500*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_SCALEWIDTH );
501*b1cdbd2cSJim Jagielski if( ISITEMSET )
502*b1cdbd2cSJim Jagielski {
503*b1cdbd2cSJim Jagielski const SvxCharScaleWidthItem& rItem = ( SvxCharScaleWidthItem& ) rSet.Get( nWhich );
504*b1cdbd2cSJim Jagielski
505*b1cdbd2cSJim Jagielski m_aPreviewWin.SetFontWidthScale( rItem.GetValue() );
506*b1cdbd2cSJim Jagielski }
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
510*b1cdbd2cSJim Jagielski namespace
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
setPrevFontEscapement(SvxFont & _rFont,sal_uInt8 nProp,sal_uInt8 nEscProp,short nEsc)513*b1cdbd2cSJim Jagielski void setPrevFontEscapement(SvxFont& _rFont,sal_uInt8 nProp, sal_uInt8 nEscProp, short nEsc )
514*b1cdbd2cSJim Jagielski {
515*b1cdbd2cSJim Jagielski _rFont.SetPropr( nProp );
516*b1cdbd2cSJim Jagielski _rFont.SetProprRel( nEscProp );
517*b1cdbd2cSJim Jagielski _rFont.SetEscapement( nEsc );
518*b1cdbd2cSJim Jagielski }
519*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
520*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
521*b1cdbd2cSJim Jagielski }
522*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
523*b1cdbd2cSJim Jagielski
SetPrevFontEscapement(sal_uInt8 nProp,sal_uInt8 nEscProp,short nEsc)524*b1cdbd2cSJim Jagielski void SvxCharBasePage::SetPrevFontEscapement( sal_uInt8 nProp, sal_uInt8 nEscProp, short nEsc )
525*b1cdbd2cSJim Jagielski {
526*b1cdbd2cSJim Jagielski setPrevFontEscapement(GetPreviewFont(),nProp,nEscProp,nEsc);
527*b1cdbd2cSJim Jagielski setPrevFontEscapement(GetPreviewCJKFont(),nProp,nEscProp,nEsc);
528*b1cdbd2cSJim Jagielski setPrevFontEscapement(GetPreviewCTLFont(),nProp,nEscProp,nEsc);
529*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
530*b1cdbd2cSJim Jagielski }
531*b1cdbd2cSJim Jagielski
532*b1cdbd2cSJim Jagielski // SvxCharNamePage_Impl --------------------------------------------------
533*b1cdbd2cSJim Jagielski
534*b1cdbd2cSJim Jagielski struct SvxCharNamePage_Impl
535*b1cdbd2cSJim Jagielski {
536*b1cdbd2cSJim Jagielski Timer m_aUpdateTimer;
537*b1cdbd2cSJim Jagielski String m_aNoStyleText;
538*b1cdbd2cSJim Jagielski String m_aTransparentText;
539*b1cdbd2cSJim Jagielski const FontList* m_pFontList;
540*b1cdbd2cSJim Jagielski sal_uInt16 m_nExtraEntryPos;
541*b1cdbd2cSJim Jagielski sal_Bool m_bMustDelete;
542*b1cdbd2cSJim Jagielski sal_Bool m_bInSearchMode;
543*b1cdbd2cSJim Jagielski
SvxCharNamePage_ImplSvxCharNamePage_Impl544*b1cdbd2cSJim Jagielski SvxCharNamePage_Impl() :
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski m_pFontList ( NULL ),
547*b1cdbd2cSJim Jagielski m_nExtraEntryPos( LISTBOX_ENTRY_NOTFOUND ),
548*b1cdbd2cSJim Jagielski m_bMustDelete ( sal_False ),
549*b1cdbd2cSJim Jagielski m_bInSearchMode ( sal_False )
550*b1cdbd2cSJim Jagielski
551*b1cdbd2cSJim Jagielski {
552*b1cdbd2cSJim Jagielski m_aUpdateTimer.SetTimeout( 350 );
553*b1cdbd2cSJim Jagielski }
554*b1cdbd2cSJim Jagielski
~SvxCharNamePage_ImplSvxCharNamePage_Impl555*b1cdbd2cSJim Jagielski ~SvxCharNamePage_Impl()
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski if ( m_bMustDelete )
558*b1cdbd2cSJim Jagielski delete m_pFontList;
559*b1cdbd2cSJim Jagielski }
560*b1cdbd2cSJim Jagielski };
561*b1cdbd2cSJim Jagielski
562*b1cdbd2cSJim Jagielski // class SvxCharNamePage -------------------------------------------------
563*b1cdbd2cSJim Jagielski
SvxCharNamePage(Window * pParent,const SfxItemSet & rInSet)564*b1cdbd2cSJim Jagielski SvxCharNamePage::SvxCharNamePage( Window* pParent, const SfxItemSet& rInSet ) :
565*b1cdbd2cSJim Jagielski
566*b1cdbd2cSJim Jagielski SvxCharBasePage( pParent, CUI_RES( RID_SVXPAGE_CHAR_NAME ), rInSet, WIN_CHAR_PREVIEW, FT_CHAR_FONTTYPE ),
567*b1cdbd2cSJim Jagielski m_pImpl ( new SvxCharNamePage_Impl )
568*b1cdbd2cSJim Jagielski {
569*b1cdbd2cSJim Jagielski m_pImpl->m_aNoStyleText = String( CUI_RES( STR_CHARNAME_NOSTYLE ) );
570*b1cdbd2cSJim Jagielski m_pImpl->m_aTransparentText = String( CUI_RES( STR_CHARNAME_TRANSPARENT ) );
571*b1cdbd2cSJim Jagielski
572*b1cdbd2cSJim Jagielski SvtLanguageOptions aLanguageOptions;
573*b1cdbd2cSJim Jagielski sal_Bool bCJK = ( aLanguageOptions.IsCJKFontEnabled() || aLanguageOptions.IsCTLFontEnabled() );
574*b1cdbd2cSJim Jagielski
575*b1cdbd2cSJim Jagielski m_pWestLine = new FixedLine( this, CUI_RES( FL_WEST ) );
576*b1cdbd2cSJim Jagielski m_pWestFontNameFT = new FixedText( this, CUI_RES( bCJK ? FT_WEST_NAME : FT_WEST_NAME_NOCJK ) );
577*b1cdbd2cSJim Jagielski m_pWestFontNameLB = new FontNameBox( this, CUI_RES( bCJK ? LB_WEST_NAME : LB_WEST_NAME_NOCJK ) );
578*b1cdbd2cSJim Jagielski m_pWestFontStyleFT = new FixedText( this, CUI_RES( bCJK ? FT_WEST_STYLE : FT_WEST_STYLE_NOCJK ) );
579*b1cdbd2cSJim Jagielski m_pWestFontStyleLB = new FontStyleBox( this, CUI_RES( bCJK ? LB_WEST_STYLE : LB_WEST_STYLE_NOCJK ) );
580*b1cdbd2cSJim Jagielski m_pWestFontSizeFT = new FixedText( this, CUI_RES( bCJK ? FT_WEST_SIZE : FT_WEST_SIZE_NOCJK ) );
581*b1cdbd2cSJim Jagielski m_pWestFontSizeLB = new FontSizeBox( this, CUI_RES( bCJK ? LB_WEST_SIZE : LB_WEST_SIZE_NOCJK ) );
582*b1cdbd2cSJim Jagielski
583*b1cdbd2cSJim Jagielski if( !bCJK )
584*b1cdbd2cSJim Jagielski {
585*b1cdbd2cSJim Jagielski m_pColorFL = new FixedLine( this, CUI_RES( FL_COLOR2 ) );
586*b1cdbd2cSJim Jagielski m_pColorFT = new FixedText( this, CUI_RES( FT_COLOR2 ) );
587*b1cdbd2cSJim Jagielski m_pColorLB = new ColorListBox( this, CUI_RES( LB_COLOR2 ) );
588*b1cdbd2cSJim Jagielski }
589*b1cdbd2cSJim Jagielski
590*b1cdbd2cSJim Jagielski m_pWestFontLanguageFT = new FixedText( this, CUI_RES( bCJK ? FT_WEST_LANG : FT_WEST_LANG_NOCJK ) );
591*b1cdbd2cSJim Jagielski m_pWestFontLanguageLB = new SvxLanguageBox( this, CUI_RES( bCJK ? LB_WEST_LANG : LB_WEST_LANG_NOCJK ) );
592*b1cdbd2cSJim Jagielski
593*b1cdbd2cSJim Jagielski m_pEastLine = new FixedLine( this, CUI_RES( FL_EAST ) );
594*b1cdbd2cSJim Jagielski m_pEastFontNameFT = new FixedText( this, CUI_RES( FT_EAST_NAME ) );
595*b1cdbd2cSJim Jagielski m_pEastFontNameLB = new FontNameBox( this, CUI_RES( LB_EAST_NAME ) );
596*b1cdbd2cSJim Jagielski m_pEastFontStyleFT = new FixedText( this, CUI_RES( FT_EAST_STYLE ) );
597*b1cdbd2cSJim Jagielski m_pEastFontStyleLB = new FontStyleBox( this, CUI_RES( LB_EAST_STYLE ) );
598*b1cdbd2cSJim Jagielski m_pEastFontSizeFT = new FixedText( this, CUI_RES( FT_EAST_SIZE ) );
599*b1cdbd2cSJim Jagielski m_pEastFontSizeLB = new FontSizeBox( this, CUI_RES( LB_EAST_SIZE ) );
600*b1cdbd2cSJim Jagielski m_pEastFontLanguageFT = new FixedText( this, CUI_RES( FT_EAST_LANG ) );
601*b1cdbd2cSJim Jagielski m_pEastFontLanguageLB = new SvxLanguageBox( this, CUI_RES( LB_EAST_LANG ) );
602*b1cdbd2cSJim Jagielski
603*b1cdbd2cSJim Jagielski m_pCTLLine = new FixedLine( this, CUI_RES( FL_CTL ) );
604*b1cdbd2cSJim Jagielski m_pCTLFontNameFT = new FixedText( this, CUI_RES( FT_CTL_NAME ) );
605*b1cdbd2cSJim Jagielski m_pCTLFontNameLB = new FontNameBox( this, CUI_RES( LB_CTL_NAME ) );
606*b1cdbd2cSJim Jagielski m_pCTLFontStyleFT = new FixedText( this, CUI_RES( FT_CTL_STYLE ) );
607*b1cdbd2cSJim Jagielski m_pCTLFontStyleLB = new FontStyleBox( this, CUI_RES( LB_CTL_STYLE ) );
608*b1cdbd2cSJim Jagielski m_pCTLFontSizeFT = new FixedText( this, CUI_RES( FT_CTL_SIZE ) );
609*b1cdbd2cSJim Jagielski m_pCTLFontSizeLB = new FontSizeBox( this, CUI_RES( LB_CTL_SIZE ) );
610*b1cdbd2cSJim Jagielski m_pCTLFontLanguageFT = new FixedText( this, CUI_RES( FT_CTL_LANG ) );
611*b1cdbd2cSJim Jagielski m_pCTLFontLanguageLB = new SvxLanguageBox( this, CUI_RES( LB_CTL_LANG ) );
612*b1cdbd2cSJim Jagielski
613*b1cdbd2cSJim Jagielski if( bCJK )
614*b1cdbd2cSJim Jagielski {
615*b1cdbd2cSJim Jagielski m_pColorFL = new FixedLine( this, CUI_RES( FL_COLOR2 ) );
616*b1cdbd2cSJim Jagielski m_pColorFT = new FixedText( this, CUI_RES( FT_COLOR2 ) );
617*b1cdbd2cSJim Jagielski m_pColorLB = new ColorListBox( this, CUI_RES( LB_COLOR2 ) );
618*b1cdbd2cSJim Jagielski }
619*b1cdbd2cSJim Jagielski
620*b1cdbd2cSJim Jagielski m_pWestLine ->Show( bCJK );
621*b1cdbd2cSJim Jagielski m_pColorFL ->Show( bCJK );
622*b1cdbd2cSJim Jagielski
623*b1cdbd2cSJim Jagielski bCJK = aLanguageOptions.IsCJKFontEnabled();
624*b1cdbd2cSJim Jagielski m_pEastLine ->Show( bCJK );
625*b1cdbd2cSJim Jagielski m_pEastFontNameFT ->Show( bCJK );
626*b1cdbd2cSJim Jagielski m_pEastFontNameLB ->Show( bCJK );
627*b1cdbd2cSJim Jagielski m_pEastFontStyleFT ->Show( bCJK );
628*b1cdbd2cSJim Jagielski m_pEastFontStyleLB ->Show( bCJK );
629*b1cdbd2cSJim Jagielski m_pEastFontSizeFT ->Show( bCJK );
630*b1cdbd2cSJim Jagielski m_pEastFontSizeLB ->Show( bCJK );
631*b1cdbd2cSJim Jagielski m_pEastFontLanguageFT ->Show( bCJK );
632*b1cdbd2cSJim Jagielski m_pEastFontLanguageLB ->Show( bCJK );
633*b1cdbd2cSJim Jagielski
634*b1cdbd2cSJim Jagielski sal_Bool bShowCTL = aLanguageOptions.IsCTLFontEnabled();
635*b1cdbd2cSJim Jagielski if ( bShowCTL && !bCJK )
636*b1cdbd2cSJim Jagielski {
637*b1cdbd2cSJim Jagielski // move CTL controls to the places of the CJK controls, if these controls aren't visible
638*b1cdbd2cSJim Jagielski m_pCTLLine ->SetPosPixel( m_pEastLine->GetPosPixel() );
639*b1cdbd2cSJim Jagielski m_pCTLFontNameFT ->SetPosPixel( m_pEastFontNameFT->GetPosPixel() );
640*b1cdbd2cSJim Jagielski m_pCTLFontNameLB ->SetPosPixel( m_pEastFontNameLB->GetPosPixel() );
641*b1cdbd2cSJim Jagielski m_pCTLFontStyleFT ->SetPosPixel( m_pEastFontStyleFT->GetPosPixel() );
642*b1cdbd2cSJim Jagielski m_pCTLFontStyleLB ->SetPosPixel( m_pEastFontStyleLB->GetPosPixel() );
643*b1cdbd2cSJim Jagielski m_pCTLFontSizeFT ->SetPosPixel( m_pEastFontSizeFT->GetPosPixel() );
644*b1cdbd2cSJim Jagielski m_pCTLFontSizeLB ->SetPosPixel( m_pEastFontSizeLB->GetPosPixel() );
645*b1cdbd2cSJim Jagielski m_pCTLFontLanguageFT ->SetPosPixel( m_pEastFontLanguageFT->GetPosPixel() );
646*b1cdbd2cSJim Jagielski m_pCTLFontLanguageLB ->SetPosPixel( m_pEastFontLanguageLB->GetPosPixel() );
647*b1cdbd2cSJim Jagielski }
648*b1cdbd2cSJim Jagielski m_pCTLLine ->Show( bShowCTL );
649*b1cdbd2cSJim Jagielski m_pCTLFontNameFT ->Show( bShowCTL );
650*b1cdbd2cSJim Jagielski m_pCTLFontNameLB ->Show( bShowCTL );
651*b1cdbd2cSJim Jagielski m_pCTLFontStyleFT ->Show( bShowCTL );
652*b1cdbd2cSJim Jagielski m_pCTLFontStyleLB ->Show( bShowCTL );
653*b1cdbd2cSJim Jagielski m_pCTLFontSizeFT ->Show( bShowCTL );
654*b1cdbd2cSJim Jagielski m_pCTLFontSizeLB ->Show( bShowCTL );
655*b1cdbd2cSJim Jagielski m_pCTLFontLanguageFT ->Show( bShowCTL );
656*b1cdbd2cSJim Jagielski m_pCTLFontLanguageLB ->Show( bShowCTL );
657*b1cdbd2cSJim Jagielski
658*b1cdbd2cSJim Jagielski FreeResource();
659*b1cdbd2cSJim Jagielski
660*b1cdbd2cSJim Jagielski m_pWestFontLanguageLB->SetLanguageList( LANG_LIST_WESTERN, sal_True, sal_False, sal_True );
661*b1cdbd2cSJim Jagielski m_pEastFontLanguageLB->SetLanguageList( LANG_LIST_CJK, sal_True, sal_False, sal_True );
662*b1cdbd2cSJim Jagielski m_pCTLFontLanguageLB->SetLanguageList( LANG_LIST_CTL, sal_True, sal_False, sal_True );
663*b1cdbd2cSJim Jagielski
664*b1cdbd2cSJim Jagielski Initialize();
665*b1cdbd2cSJim Jagielski }
666*b1cdbd2cSJim Jagielski
667*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
668*b1cdbd2cSJim Jagielski
~SvxCharNamePage()669*b1cdbd2cSJim Jagielski SvxCharNamePage::~SvxCharNamePage()
670*b1cdbd2cSJim Jagielski {
671*b1cdbd2cSJim Jagielski delete m_pImpl;
672*b1cdbd2cSJim Jagielski
673*b1cdbd2cSJim Jagielski delete m_pWestLine;
674*b1cdbd2cSJim Jagielski delete m_pWestFontNameFT;
675*b1cdbd2cSJim Jagielski delete m_pWestFontNameLB;
676*b1cdbd2cSJim Jagielski delete m_pWestFontStyleFT;
677*b1cdbd2cSJim Jagielski delete m_pWestFontStyleLB;
678*b1cdbd2cSJim Jagielski delete m_pWestFontSizeFT;
679*b1cdbd2cSJim Jagielski delete m_pWestFontSizeLB;
680*b1cdbd2cSJim Jagielski delete m_pWestFontLanguageFT;
681*b1cdbd2cSJim Jagielski delete m_pWestFontLanguageLB;
682*b1cdbd2cSJim Jagielski
683*b1cdbd2cSJim Jagielski delete m_pEastLine;
684*b1cdbd2cSJim Jagielski delete m_pEastFontNameFT;
685*b1cdbd2cSJim Jagielski delete m_pEastFontNameLB;
686*b1cdbd2cSJim Jagielski delete m_pEastFontStyleFT;
687*b1cdbd2cSJim Jagielski delete m_pEastFontStyleLB;
688*b1cdbd2cSJim Jagielski delete m_pEastFontSizeFT;
689*b1cdbd2cSJim Jagielski delete m_pEastFontSizeLB;
690*b1cdbd2cSJim Jagielski delete m_pEastFontLanguageFT;
691*b1cdbd2cSJim Jagielski delete m_pEastFontLanguageLB;
692*b1cdbd2cSJim Jagielski
693*b1cdbd2cSJim Jagielski delete m_pCTLLine;
694*b1cdbd2cSJim Jagielski delete m_pCTLFontNameFT;
695*b1cdbd2cSJim Jagielski delete m_pCTLFontNameLB;
696*b1cdbd2cSJim Jagielski delete m_pCTLFontStyleFT;
697*b1cdbd2cSJim Jagielski delete m_pCTLFontStyleLB;
698*b1cdbd2cSJim Jagielski delete m_pCTLFontSizeFT;
699*b1cdbd2cSJim Jagielski delete m_pCTLFontSizeLB;
700*b1cdbd2cSJim Jagielski delete m_pCTLFontLanguageFT;
701*b1cdbd2cSJim Jagielski delete m_pCTLFontLanguageLB;
702*b1cdbd2cSJim Jagielski
703*b1cdbd2cSJim Jagielski delete m_pColorFL;
704*b1cdbd2cSJim Jagielski delete m_pColorFT;
705*b1cdbd2cSJim Jagielski delete m_pColorLB;
706*b1cdbd2cSJim Jagielski }
707*b1cdbd2cSJim Jagielski
708*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
709*b1cdbd2cSJim Jagielski
Initialize()710*b1cdbd2cSJim Jagielski void SvxCharNamePage::Initialize()
711*b1cdbd2cSJim Jagielski {
712*b1cdbd2cSJim Jagielski // to handle the changes of the other pages
713*b1cdbd2cSJim Jagielski SetExchangeSupport();
714*b1cdbd2cSJim Jagielski
715*b1cdbd2cSJim Jagielski // fill the color box
716*b1cdbd2cSJim Jagielski SfxObjectShell* pDocSh = SfxObjectShell::Current();
717*b1cdbd2cSJim Jagielski //DBG_ASSERT( pDocSh, "DocShell not found!" );
718*b1cdbd2cSJim Jagielski XColorListSharedPtr aColorTable;
719*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem = NULL;
720*b1cdbd2cSJim Jagielski
721*b1cdbd2cSJim Jagielski if ( pDocSh )
722*b1cdbd2cSJim Jagielski {
723*b1cdbd2cSJim Jagielski pItem = pDocSh->GetItem( SID_COLOR_TABLE );
724*b1cdbd2cSJim Jagielski if ( pItem != NULL )
725*b1cdbd2cSJim Jagielski aColorTable = static_cast< const SvxColorTableItem* >(pItem)->GetColorTable();
726*b1cdbd2cSJim Jagielski }
727*b1cdbd2cSJim Jagielski
728*b1cdbd2cSJim Jagielski if ( !aColorTable.get() )
729*b1cdbd2cSJim Jagielski {
730*b1cdbd2cSJim Jagielski aColorTable = XPropertyListFactory::CreateSharedXColorList(SvtPathOptions().GetPalettePath());
731*b1cdbd2cSJim Jagielski }
732*b1cdbd2cSJim Jagielski
733*b1cdbd2cSJim Jagielski m_pColorLB->SetUpdateMode( sal_False );
734*b1cdbd2cSJim Jagielski
735*b1cdbd2cSJim Jagielski {
736*b1cdbd2cSJim Jagielski SfxPoolItem* pDummy;
737*b1cdbd2cSJim Jagielski SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocSh );
738*b1cdbd2cSJim Jagielski if( !pFrame || SFX_ITEM_DEFAULT > pFrame->GetBindings().QueryState(
739*b1cdbd2cSJim Jagielski SID_ATTR_AUTO_COLOR_INVALID, pDummy ))
740*b1cdbd2cSJim Jagielski m_pColorLB->InsertEntry( Color( COL_AUTO ),
741*b1cdbd2cSJim Jagielski SVX_RESSTR( RID_SVXSTR_AUTOMATIC ));
742*b1cdbd2cSJim Jagielski }
743*b1cdbd2cSJim Jagielski
744*b1cdbd2cSJim Jagielski for ( long i = 0; i < aColorTable->Count(); i++ )
745*b1cdbd2cSJim Jagielski {
746*b1cdbd2cSJim Jagielski XColorEntry* pEntry = aColorTable->GetColor(i);
747*b1cdbd2cSJim Jagielski m_pColorLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
748*b1cdbd2cSJim Jagielski }
749*b1cdbd2cSJim Jagielski
750*b1cdbd2cSJim Jagielski m_pColorLB->SetUpdateMode( sal_True );
751*b1cdbd2cSJim Jagielski m_pColorLB->SetSelectHdl( LINK( this, SvxCharNamePage, ColorBoxSelectHdl_Impl ) );
752*b1cdbd2cSJim Jagielski
753*b1cdbd2cSJim Jagielski Link aLink = LINK( this, SvxCharNamePage, FontModifyHdl_Impl );
754*b1cdbd2cSJim Jagielski m_pWestFontNameLB->SetModifyHdl( aLink );
755*b1cdbd2cSJim Jagielski m_pWestFontStyleLB->SetModifyHdl( aLink );
756*b1cdbd2cSJim Jagielski m_pWestFontSizeLB->SetModifyHdl( aLink );
757*b1cdbd2cSJim Jagielski m_pEastFontNameLB->SetModifyHdl( aLink );
758*b1cdbd2cSJim Jagielski m_pEastFontStyleLB->SetModifyHdl( aLink );
759*b1cdbd2cSJim Jagielski m_pEastFontSizeLB->SetModifyHdl( aLink );
760*b1cdbd2cSJim Jagielski m_pCTLFontNameLB->SetModifyHdl( aLink );
761*b1cdbd2cSJim Jagielski m_pCTLFontStyleLB->SetModifyHdl( aLink );
762*b1cdbd2cSJim Jagielski m_pCTLFontSizeLB->SetModifyHdl( aLink );
763*b1cdbd2cSJim Jagielski
764*b1cdbd2cSJim Jagielski m_pImpl->m_aUpdateTimer.SetTimeoutHdl( LINK( this, SvxCharNamePage, UpdateHdl_Impl ) );
765*b1cdbd2cSJim Jagielski
766*b1cdbd2cSJim Jagielski m_pColorFL->Hide();
767*b1cdbd2cSJim Jagielski m_pColorFT->Hide();
768*b1cdbd2cSJim Jagielski m_pColorLB->Hide();
769*b1cdbd2cSJim Jagielski }
770*b1cdbd2cSJim Jagielski
771*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
772*b1cdbd2cSJim Jagielski
GetFontList() const773*b1cdbd2cSJim Jagielski const FontList* SvxCharNamePage::GetFontList() const
774*b1cdbd2cSJim Jagielski {
775*b1cdbd2cSJim Jagielski if ( !m_pImpl->m_pFontList )
776*b1cdbd2cSJim Jagielski {
777*b1cdbd2cSJim Jagielski SfxObjectShell* pDocSh = SfxObjectShell::Current();
778*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem;
779*b1cdbd2cSJim Jagielski
780*b1cdbd2cSJim Jagielski /* #110771# SvxFontListItem::GetFontList can return NULL */
781*b1cdbd2cSJim Jagielski if ( pDocSh )
782*b1cdbd2cSJim Jagielski {
783*b1cdbd2cSJim Jagielski pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
784*b1cdbd2cSJim Jagielski if ( pItem != NULL )
785*b1cdbd2cSJim Jagielski {
786*b1cdbd2cSJim Jagielski DBG_ASSERT(NULL != ( (SvxFontListItem*)pItem )->GetFontList(),
787*b1cdbd2cSJim Jagielski "Where is the font list?");
788*b1cdbd2cSJim Jagielski m_pImpl->m_pFontList = static_cast<const SvxFontListItem*>(pItem )->GetFontList()->Clone();
789*b1cdbd2cSJim Jagielski m_pImpl->m_bMustDelete = sal_True;
790*b1cdbd2cSJim Jagielski }
791*b1cdbd2cSJim Jagielski }
792*b1cdbd2cSJim Jagielski if(!m_pImpl->m_pFontList)
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski m_pImpl->m_pFontList =
795*b1cdbd2cSJim Jagielski new FontList( Application::GetDefaultDevice() );
796*b1cdbd2cSJim Jagielski m_pImpl->m_bMustDelete = sal_True;
797*b1cdbd2cSJim Jagielski }
798*b1cdbd2cSJim Jagielski }
799*b1cdbd2cSJim Jagielski
800*b1cdbd2cSJim Jagielski return m_pImpl->m_pFontList;
801*b1cdbd2cSJim Jagielski }
802*b1cdbd2cSJim Jagielski
803*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
804*b1cdbd2cSJim Jagielski namespace
805*b1cdbd2cSJim Jagielski {
calcFontInfo(SvxFont & _rFont,SvxCharNamePage * _pPage,const FontNameBox * _pFontNameLB,const FontStyleBox * _pFontStyleLB,const FontSizeBox * _pFontSizeLB,const FontList * _pFontList,sal_uInt16 _nFontWhich,sal_uInt16 _nFontHeightWhich)806*b1cdbd2cSJim Jagielski FontInfo calcFontInfo( SvxFont& _rFont,
807*b1cdbd2cSJim Jagielski SvxCharNamePage* _pPage,
808*b1cdbd2cSJim Jagielski const FontNameBox* _pFontNameLB,
809*b1cdbd2cSJim Jagielski const FontStyleBox* _pFontStyleLB,
810*b1cdbd2cSJim Jagielski const FontSizeBox* _pFontSizeLB,
811*b1cdbd2cSJim Jagielski const FontList* _pFontList,
812*b1cdbd2cSJim Jagielski sal_uInt16 _nFontWhich,
813*b1cdbd2cSJim Jagielski sal_uInt16 _nFontHeightWhich)
814*b1cdbd2cSJim Jagielski {
815*b1cdbd2cSJim Jagielski Size aSize = _rFont.GetSize();
816*b1cdbd2cSJim Jagielski aSize.Width() = 0;
817*b1cdbd2cSJim Jagielski FontInfo aFontInfo;
818*b1cdbd2cSJim Jagielski String sFontName(_pFontNameLB->GetText());
819*b1cdbd2cSJim Jagielski sal_Bool bFontAvailable = _pFontList->IsAvailable( sFontName );
820*b1cdbd2cSJim Jagielski if(bFontAvailable || _pFontNameLB->GetSavedValue() != sFontName)
821*b1cdbd2cSJim Jagielski aFontInfo = _pFontList->Get( sFontName, _pFontStyleLB->GetText() );
822*b1cdbd2cSJim Jagielski else
823*b1cdbd2cSJim Jagielski {
824*b1cdbd2cSJim Jagielski //get the font from itemset
825*b1cdbd2cSJim Jagielski SfxItemState eState = _pPage->GetItemSet().GetItemState( _nFontWhich );
826*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DEFAULT )
827*b1cdbd2cSJim Jagielski {
828*b1cdbd2cSJim Jagielski const SvxFontItem* pFontItem = (const SvxFontItem*)&( _pPage->GetItemSet().Get( _nFontWhich ) );
829*b1cdbd2cSJim Jagielski aFontInfo.SetName(pFontItem->GetFamilyName());
830*b1cdbd2cSJim Jagielski aFontInfo.SetStyleName(pFontItem->GetStyleName());
831*b1cdbd2cSJim Jagielski aFontInfo.SetFamily(pFontItem->GetFamily());
832*b1cdbd2cSJim Jagielski aFontInfo.SetPitch(pFontItem->GetPitch());
833*b1cdbd2cSJim Jagielski aFontInfo.SetCharSet(pFontItem->GetCharSet());
834*b1cdbd2cSJim Jagielski }
835*b1cdbd2cSJim Jagielski }
836*b1cdbd2cSJim Jagielski if ( _pFontSizeLB->IsRelative() )
837*b1cdbd2cSJim Jagielski {
838*b1cdbd2cSJim Jagielski DBG_ASSERT( _pPage->GetItemSet().GetParent(), "No parent set" );
839*b1cdbd2cSJim Jagielski const SvxFontHeightItem& rOldItem = (SvxFontHeightItem&)_pPage->GetItemSet().GetParent()->Get( _nFontHeightWhich );
840*b1cdbd2cSJim Jagielski
841*b1cdbd2cSJim Jagielski // alter Wert, skaliert
842*b1cdbd2cSJim Jagielski long nHeight;
843*b1cdbd2cSJim Jagielski if ( _pFontSizeLB->IsPtRelative() )
844*b1cdbd2cSJim Jagielski nHeight = rOldItem.GetHeight() + PointToTwips( static_cast<long>(_pFontSizeLB->GetValue() / 10) );
845*b1cdbd2cSJim Jagielski else
846*b1cdbd2cSJim Jagielski nHeight = static_cast<long>(rOldItem.GetHeight() * _pFontSizeLB->GetValue() / 100);
847*b1cdbd2cSJim Jagielski
848*b1cdbd2cSJim Jagielski // Umrechnung in twips fuer das Beispiel-Window
849*b1cdbd2cSJim Jagielski aSize.Height() =
850*b1cdbd2cSJim Jagielski ItemToControl( nHeight, _pPage->GetItemSet().GetPool()->GetMetric( _nFontHeightWhich ), SFX_FUNIT_TWIP );
851*b1cdbd2cSJim Jagielski }
852*b1cdbd2cSJim Jagielski else if ( _pFontSizeLB->GetText().Len() )
853*b1cdbd2cSJim Jagielski aSize.Height() = PointToTwips( static_cast<long>(_pFontSizeLB->GetValue() / 10) );
854*b1cdbd2cSJim Jagielski else
855*b1cdbd2cSJim Jagielski aSize.Height() = 200; // default 10pt
856*b1cdbd2cSJim Jagielski aFontInfo.SetSize( aSize );
857*b1cdbd2cSJim Jagielski
858*b1cdbd2cSJim Jagielski _rFont.SetFamily( aFontInfo.GetFamily() );
859*b1cdbd2cSJim Jagielski _rFont.SetName( aFontInfo.GetName() );
860*b1cdbd2cSJim Jagielski _rFont.SetStyleName( aFontInfo.GetStyleName() );
861*b1cdbd2cSJim Jagielski _rFont.SetPitch( aFontInfo.GetPitch() );
862*b1cdbd2cSJim Jagielski _rFont.SetCharSet( aFontInfo.GetCharSet() );
863*b1cdbd2cSJim Jagielski _rFont.SetWeight( aFontInfo.GetWeight() );
864*b1cdbd2cSJim Jagielski _rFont.SetItalic( aFontInfo.GetItalic() );
865*b1cdbd2cSJim Jagielski _rFont.SetSize( aFontInfo.GetSize() );
866*b1cdbd2cSJim Jagielski
867*b1cdbd2cSJim Jagielski return aFontInfo;
868*b1cdbd2cSJim Jagielski }
869*b1cdbd2cSJim Jagielski }
870*b1cdbd2cSJim Jagielski
871*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
872*b1cdbd2cSJim Jagielski
UpdatePreview_Impl()873*b1cdbd2cSJim Jagielski void SvxCharNamePage::UpdatePreview_Impl()
874*b1cdbd2cSJim Jagielski {
875*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
876*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
877*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
878*b1cdbd2cSJim Jagielski // Size
879*b1cdbd2cSJim Jagielski Size aSize = rFont.GetSize();
880*b1cdbd2cSJim Jagielski aSize.Width() = 0;
881*b1cdbd2cSJim Jagielski Size aCJKSize = rCJKFont.GetSize();
882*b1cdbd2cSJim Jagielski aCJKSize.Width() = 0;
883*b1cdbd2cSJim Jagielski Size aCTLSize = rCTLFont.GetSize();
884*b1cdbd2cSJim Jagielski aCTLSize.Width() = 0;
885*b1cdbd2cSJim Jagielski // Font
886*b1cdbd2cSJim Jagielski const FontList* pFontList = GetFontList();
887*b1cdbd2cSJim Jagielski FontInfo aFontInfo =
888*b1cdbd2cSJim Jagielski calcFontInfo(rFont,this,m_pWestFontNameLB,m_pWestFontStyleLB,m_pWestFontSizeLB,pFontList,GetWhich( SID_ATTR_CHAR_FONT ),GetWhich( SID_ATTR_CHAR_FONTHEIGHT ));
889*b1cdbd2cSJim Jagielski
890*b1cdbd2cSJim Jagielski calcFontInfo(rCJKFont,this,m_pEastFontNameLB,m_pEastFontStyleLB,m_pEastFontSizeLB,pFontList,GetWhich( SID_ATTR_CHAR_CJK_FONT ),GetWhich( SID_ATTR_CHAR_CJK_FONTHEIGHT ));
891*b1cdbd2cSJim Jagielski
892*b1cdbd2cSJim Jagielski calcFontInfo(rCTLFont,this,m_pCTLFontNameLB,m_pCTLFontStyleLB,m_pCTLFontSizeLB,pFontList,GetWhich( SID_ATTR_CHAR_CTL_FONT ),GetWhich( SID_ATTR_CHAR_CTL_FONTHEIGHT ));
893*b1cdbd2cSJim Jagielski
894*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
895*b1cdbd2cSJim Jagielski m_aFontTypeFT.SetText( pFontList->GetFontMapText( aFontInfo ) );
896*b1cdbd2cSJim Jagielski }
897*b1cdbd2cSJim Jagielski
898*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
899*b1cdbd2cSJim Jagielski
FillStyleBox_Impl(const FontNameBox * pNameBox)900*b1cdbd2cSJim Jagielski void SvxCharNamePage::FillStyleBox_Impl( const FontNameBox* pNameBox )
901*b1cdbd2cSJim Jagielski {
902*b1cdbd2cSJim Jagielski const FontList* pFontList = GetFontList();
903*b1cdbd2cSJim Jagielski DBG_ASSERT( pFontList, "no fontlist" );
904*b1cdbd2cSJim Jagielski
905*b1cdbd2cSJim Jagielski FontStyleBox* pStyleBox = NULL;
906*b1cdbd2cSJim Jagielski
907*b1cdbd2cSJim Jagielski if ( m_pWestFontNameLB == pNameBox )
908*b1cdbd2cSJim Jagielski pStyleBox = m_pWestFontStyleLB;
909*b1cdbd2cSJim Jagielski else if ( m_pEastFontNameLB == pNameBox )
910*b1cdbd2cSJim Jagielski pStyleBox = m_pEastFontStyleLB;
911*b1cdbd2cSJim Jagielski else if ( m_pCTLFontNameLB == pNameBox )
912*b1cdbd2cSJim Jagielski pStyleBox = m_pCTLFontStyleLB;
913*b1cdbd2cSJim Jagielski else
914*b1cdbd2cSJim Jagielski {
915*b1cdbd2cSJim Jagielski DBG_ERRORFILE( "invalid font name box" );
916*b1cdbd2cSJim Jagielski }
917*b1cdbd2cSJim Jagielski
918*b1cdbd2cSJim Jagielski pStyleBox->Fill( pNameBox->GetText(), pFontList );
919*b1cdbd2cSJim Jagielski
920*b1cdbd2cSJim Jagielski if ( m_pImpl->m_bInSearchMode )
921*b1cdbd2cSJim Jagielski {
922*b1cdbd2cSJim Jagielski // Bei der Suche zus"atzliche Eintr"age:
923*b1cdbd2cSJim Jagielski // "Nicht Fett" und "Nicht Kursiv"
924*b1cdbd2cSJim Jagielski String aEntry = m_pImpl->m_aNoStyleText;
925*b1cdbd2cSJim Jagielski const sal_Char sS[] = "%1";
926*b1cdbd2cSJim Jagielski aEntry.SearchAndReplaceAscii( sS, pFontList->GetBoldStr() );
927*b1cdbd2cSJim Jagielski m_pImpl->m_nExtraEntryPos = pStyleBox->InsertEntry( aEntry );
928*b1cdbd2cSJim Jagielski aEntry = m_pImpl->m_aNoStyleText;
929*b1cdbd2cSJim Jagielski aEntry.SearchAndReplaceAscii( sS, pFontList->GetItalicStr() );
930*b1cdbd2cSJim Jagielski pStyleBox->InsertEntry( aEntry );
931*b1cdbd2cSJim Jagielski }
932*b1cdbd2cSJim Jagielski }
933*b1cdbd2cSJim Jagielski
934*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
935*b1cdbd2cSJim Jagielski
FillSizeBox_Impl(const FontNameBox * pNameBox)936*b1cdbd2cSJim Jagielski void SvxCharNamePage::FillSizeBox_Impl( const FontNameBox* pNameBox )
937*b1cdbd2cSJim Jagielski {
938*b1cdbd2cSJim Jagielski const FontList* pFontList = GetFontList();
939*b1cdbd2cSJim Jagielski DBG_ASSERT( pFontList, "no fontlist" );
940*b1cdbd2cSJim Jagielski
941*b1cdbd2cSJim Jagielski FontStyleBox* pStyleBox = NULL;
942*b1cdbd2cSJim Jagielski FontSizeBox* pSizeBox = NULL;
943*b1cdbd2cSJim Jagielski
944*b1cdbd2cSJim Jagielski if ( m_pWestFontNameLB == pNameBox )
945*b1cdbd2cSJim Jagielski {
946*b1cdbd2cSJim Jagielski pStyleBox = m_pWestFontStyleLB;
947*b1cdbd2cSJim Jagielski pSizeBox = m_pWestFontSizeLB;
948*b1cdbd2cSJim Jagielski }
949*b1cdbd2cSJim Jagielski else if ( m_pEastFontNameLB == pNameBox )
950*b1cdbd2cSJim Jagielski {
951*b1cdbd2cSJim Jagielski pStyleBox = m_pEastFontStyleLB;
952*b1cdbd2cSJim Jagielski pSizeBox = m_pEastFontSizeLB;
953*b1cdbd2cSJim Jagielski }
954*b1cdbd2cSJim Jagielski else if ( m_pCTLFontNameLB == pNameBox )
955*b1cdbd2cSJim Jagielski {
956*b1cdbd2cSJim Jagielski pStyleBox = m_pCTLFontStyleLB;
957*b1cdbd2cSJim Jagielski pSizeBox = m_pCTLFontSizeLB;
958*b1cdbd2cSJim Jagielski }
959*b1cdbd2cSJim Jagielski else
960*b1cdbd2cSJim Jagielski {
961*b1cdbd2cSJim Jagielski DBG_ERRORFILE( "invalid font name box" );
962*b1cdbd2cSJim Jagielski }
963*b1cdbd2cSJim Jagielski
964*b1cdbd2cSJim Jagielski FontInfo _aFontInfo( pFontList->Get( pNameBox->GetText(), pStyleBox->GetText() ) );
965*b1cdbd2cSJim Jagielski pSizeBox->Fill( &_aFontInfo, pFontList );
966*b1cdbd2cSJim Jagielski }
967*b1cdbd2cSJim Jagielski
968*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
969*b1cdbd2cSJim Jagielski
Reset_Impl(const SfxItemSet & rSet,LanguageGroup eLangGrp)970*b1cdbd2cSJim Jagielski void SvxCharNamePage::Reset_Impl( const SfxItemSet& rSet, LanguageGroup eLangGrp )
971*b1cdbd2cSJim Jagielski {
972*b1cdbd2cSJim Jagielski FixedText* pNameLabel = NULL;
973*b1cdbd2cSJim Jagielski FontNameBox* pNameBox = NULL;
974*b1cdbd2cSJim Jagielski FixedText* pStyleLabel = NULL;
975*b1cdbd2cSJim Jagielski FontStyleBox* pStyleBox = NULL;
976*b1cdbd2cSJim Jagielski FixedText* pSizeLabel = NULL;
977*b1cdbd2cSJim Jagielski FontSizeBox* pSizeBox = NULL;
978*b1cdbd2cSJim Jagielski FixedText* pLangFT = NULL;
979*b1cdbd2cSJim Jagielski SvxLanguageBox* pLangBox = NULL;
980*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = 0;
981*b1cdbd2cSJim Jagielski
982*b1cdbd2cSJim Jagielski switch ( eLangGrp )
983*b1cdbd2cSJim Jagielski {
984*b1cdbd2cSJim Jagielski case Western :
985*b1cdbd2cSJim Jagielski pNameLabel = m_pWestFontNameFT;
986*b1cdbd2cSJim Jagielski pNameBox = m_pWestFontNameLB;
987*b1cdbd2cSJim Jagielski pStyleLabel = m_pWestFontStyleFT;
988*b1cdbd2cSJim Jagielski pStyleBox = m_pWestFontStyleLB;
989*b1cdbd2cSJim Jagielski pSizeLabel = m_pWestFontSizeFT;
990*b1cdbd2cSJim Jagielski pSizeBox = m_pWestFontSizeLB;
991*b1cdbd2cSJim Jagielski pLangFT = m_pWestFontLanguageFT;
992*b1cdbd2cSJim Jagielski pLangBox = m_pWestFontLanguageLB;
993*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_FONT );
994*b1cdbd2cSJim Jagielski break;
995*b1cdbd2cSJim Jagielski
996*b1cdbd2cSJim Jagielski case Asian :
997*b1cdbd2cSJim Jagielski pNameLabel = m_pEastFontNameFT;
998*b1cdbd2cSJim Jagielski pNameBox = m_pEastFontNameLB;
999*b1cdbd2cSJim Jagielski pStyleLabel = m_pEastFontStyleFT;
1000*b1cdbd2cSJim Jagielski pStyleBox = m_pEastFontStyleLB;
1001*b1cdbd2cSJim Jagielski pSizeLabel = m_pEastFontSizeFT;
1002*b1cdbd2cSJim Jagielski pSizeBox = m_pEastFontSizeLB;
1003*b1cdbd2cSJim Jagielski pLangFT = m_pEastFontLanguageFT;
1004*b1cdbd2cSJim Jagielski pLangBox = m_pEastFontLanguageLB;
1005*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CJK_FONT );
1006*b1cdbd2cSJim Jagielski break;
1007*b1cdbd2cSJim Jagielski
1008*b1cdbd2cSJim Jagielski case Ctl :
1009*b1cdbd2cSJim Jagielski pNameLabel = m_pCTLFontNameFT;
1010*b1cdbd2cSJim Jagielski pNameBox = m_pCTLFontNameLB;
1011*b1cdbd2cSJim Jagielski pStyleLabel = m_pCTLFontStyleFT;
1012*b1cdbd2cSJim Jagielski pStyleBox = m_pCTLFontStyleLB;
1013*b1cdbd2cSJim Jagielski pSizeLabel = m_pCTLFontSizeFT;
1014*b1cdbd2cSJim Jagielski pSizeBox = m_pCTLFontSizeLB;
1015*b1cdbd2cSJim Jagielski pLangFT = m_pCTLFontLanguageFT;
1016*b1cdbd2cSJim Jagielski pLangBox = m_pCTLFontLanguageLB;
1017*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CTL_FONT );
1018*b1cdbd2cSJim Jagielski break;
1019*b1cdbd2cSJim Jagielski }
1020*b1cdbd2cSJim Jagielski
1021*b1cdbd2cSJim Jagielski // die FontListBox fuellen
1022*b1cdbd2cSJim Jagielski const FontList* pFontList = GetFontList();
1023*b1cdbd2cSJim Jagielski pNameBox->Fill( pFontList );
1024*b1cdbd2cSJim Jagielski
1025*b1cdbd2cSJim Jagielski // Font ermitteln
1026*b1cdbd2cSJim Jagielski const SvxFontItem* pFontItem = NULL;
1027*b1cdbd2cSJim Jagielski SfxItemState eState = rSet.GetItemState( nWhich );
1028*b1cdbd2cSJim Jagielski
1029*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DEFAULT )
1030*b1cdbd2cSJim Jagielski {
1031*b1cdbd2cSJim Jagielski pFontItem = (const SvxFontItem*)&( rSet.Get( nWhich ) );
1032*b1cdbd2cSJim Jagielski pNameBox->SetText( pFontItem->GetFamilyName() );
1033*b1cdbd2cSJim Jagielski }
1034*b1cdbd2cSJim Jagielski else
1035*b1cdbd2cSJim Jagielski {
1036*b1cdbd2cSJim Jagielski pNameBox->SetText( String() );
1037*b1cdbd2cSJim Jagielski }
1038*b1cdbd2cSJim Jagielski
1039*b1cdbd2cSJim Jagielski FillStyleBox_Impl( pNameBox );
1040*b1cdbd2cSJim Jagielski
1041*b1cdbd2cSJim Jagielski FASTBOOL bStyle = sal_False;
1042*b1cdbd2cSJim Jagielski FASTBOOL bStyleAvailable = sal_True;
1043*b1cdbd2cSJim Jagielski FontItalic eItalic = ITALIC_NONE;
1044*b1cdbd2cSJim Jagielski FontWeight eWeight = WEIGHT_NORMAL;
1045*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1046*b1cdbd2cSJim Jagielski {
1047*b1cdbd2cSJim Jagielski case Western : nWhich = GetWhich( SID_ATTR_CHAR_POSTURE ); break;
1048*b1cdbd2cSJim Jagielski case Asian : nWhich = GetWhich( SID_ATTR_CHAR_CJK_POSTURE ); break;
1049*b1cdbd2cSJim Jagielski case Ctl : nWhich = GetWhich( SID_ATTR_CHAR_CTL_POSTURE ); break;
1050*b1cdbd2cSJim Jagielski }
1051*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
1052*b1cdbd2cSJim Jagielski
1053*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DEFAULT )
1054*b1cdbd2cSJim Jagielski {
1055*b1cdbd2cSJim Jagielski const SvxPostureItem& rItem = (SvxPostureItem&)rSet.Get( nWhich );
1056*b1cdbd2cSJim Jagielski eItalic = (FontItalic)rItem.GetValue();
1057*b1cdbd2cSJim Jagielski bStyle = sal_True;
1058*b1cdbd2cSJim Jagielski }
1059*b1cdbd2cSJim Jagielski bStyleAvailable = bStyleAvailable && (eState >= SFX_ITEM_DONTCARE);
1060*b1cdbd2cSJim Jagielski
1061*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1062*b1cdbd2cSJim Jagielski {
1063*b1cdbd2cSJim Jagielski case Western : nWhich = GetWhich( SID_ATTR_CHAR_WEIGHT ); break;
1064*b1cdbd2cSJim Jagielski case Asian : nWhich = GetWhich( SID_ATTR_CHAR_CJK_WEIGHT ); break;
1065*b1cdbd2cSJim Jagielski case Ctl : nWhich = GetWhich( SID_ATTR_CHAR_CTL_WEIGHT ); break;
1066*b1cdbd2cSJim Jagielski }
1067*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
1068*b1cdbd2cSJim Jagielski
1069*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DEFAULT )
1070*b1cdbd2cSJim Jagielski {
1071*b1cdbd2cSJim Jagielski SvxWeightItem& rItem = (SvxWeightItem&)rSet.Get( nWhich );
1072*b1cdbd2cSJim Jagielski eWeight = (FontWeight)rItem.GetValue();
1073*b1cdbd2cSJim Jagielski }
1074*b1cdbd2cSJim Jagielski else
1075*b1cdbd2cSJim Jagielski bStyle = sal_False;
1076*b1cdbd2cSJim Jagielski bStyleAvailable = bStyleAvailable && (eState >= SFX_ITEM_DONTCARE);
1077*b1cdbd2cSJim Jagielski
1078*b1cdbd2cSJim Jagielski // Aktuell eingestellter Font
1079*b1cdbd2cSJim Jagielski if ( bStyle && pFontItem )
1080*b1cdbd2cSJim Jagielski {
1081*b1cdbd2cSJim Jagielski FontInfo aInfo = pFontList->Get( pFontItem->GetFamilyName(), eWeight, eItalic );
1082*b1cdbd2cSJim Jagielski pStyleBox->SetText( pFontList->GetStyleName( aInfo ) );
1083*b1cdbd2cSJim Jagielski }
1084*b1cdbd2cSJim Jagielski else if ( !m_pImpl->m_bInSearchMode || !bStyle )
1085*b1cdbd2cSJim Jagielski {
1086*b1cdbd2cSJim Jagielski pStyleBox->SetText( String() );
1087*b1cdbd2cSJim Jagielski }
1088*b1cdbd2cSJim Jagielski else if ( bStyle )
1089*b1cdbd2cSJim Jagielski {
1090*b1cdbd2cSJim Jagielski FontInfo aInfo = pFontList->Get( String(), eWeight, eItalic );
1091*b1cdbd2cSJim Jagielski pStyleBox->SetText( pFontList->GetStyleName( aInfo ) );
1092*b1cdbd2cSJim Jagielski }
1093*b1cdbd2cSJim Jagielski if (!bStyleAvailable)
1094*b1cdbd2cSJim Jagielski {
1095*b1cdbd2cSJim Jagielski pStyleBox->Disable( );
1096*b1cdbd2cSJim Jagielski pStyleLabel->Disable( );
1097*b1cdbd2cSJim Jagielski }
1098*b1cdbd2cSJim Jagielski
1099*b1cdbd2cSJim Jagielski // SizeBox fuellen
1100*b1cdbd2cSJim Jagielski FillSizeBox_Impl( pNameBox );
1101*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1102*b1cdbd2cSJim Jagielski {
1103*b1cdbd2cSJim Jagielski case Western : nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); break;
1104*b1cdbd2cSJim Jagielski case Asian : nWhich = GetWhich( SID_ATTR_CHAR_CJK_FONTHEIGHT ); break;
1105*b1cdbd2cSJim Jagielski case Ctl : nWhich = GetWhich( SID_ATTR_CHAR_CTL_FONTHEIGHT ); break;
1106*b1cdbd2cSJim Jagielski }
1107*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
1108*b1cdbd2cSJim Jagielski
1109*b1cdbd2cSJim Jagielski if ( pSizeBox->IsRelativeMode() )
1110*b1cdbd2cSJim Jagielski {
1111*b1cdbd2cSJim Jagielski SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich );
1112*b1cdbd2cSJim Jagielski const SvxFontHeightItem& rItem = (SvxFontHeightItem&)rSet.Get( nWhich );
1113*b1cdbd2cSJim Jagielski
1114*b1cdbd2cSJim Jagielski if( rItem.GetProp() != 100 || SFX_MAPUNIT_RELATIVE != rItem.GetPropUnit() )
1115*b1cdbd2cSJim Jagielski {
1116*b1cdbd2cSJim Jagielski sal_Bool bPtRel = SFX_MAPUNIT_POINT == rItem.GetPropUnit();
1117*b1cdbd2cSJim Jagielski pSizeBox->SetPtRelative( bPtRel );
1118*b1cdbd2cSJim Jagielski pSizeBox->SetValue( bPtRel ? ((short)rItem.GetProp()) * 10 : rItem.GetProp() );
1119*b1cdbd2cSJim Jagielski }
1120*b1cdbd2cSJim Jagielski else
1121*b1cdbd2cSJim Jagielski {
1122*b1cdbd2cSJim Jagielski pSizeBox->SetRelative();
1123*b1cdbd2cSJim Jagielski pSizeBox->SetValue( (long)CalcToPoint( rItem.GetHeight(), eUnit, 10 ) );
1124*b1cdbd2cSJim Jagielski }
1125*b1cdbd2cSJim Jagielski }
1126*b1cdbd2cSJim Jagielski else if ( eState >= SFX_ITEM_DEFAULT )
1127*b1cdbd2cSJim Jagielski {
1128*b1cdbd2cSJim Jagielski SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich );
1129*b1cdbd2cSJim Jagielski const SvxFontHeightItem& rItem = (SvxFontHeightItem&)rSet.Get( nWhich );
1130*b1cdbd2cSJim Jagielski pSizeBox->SetValue( (long)CalcToPoint( rItem.GetHeight(), eUnit, 10 ) );
1131*b1cdbd2cSJim Jagielski }
1132*b1cdbd2cSJim Jagielski else
1133*b1cdbd2cSJim Jagielski {
1134*b1cdbd2cSJim Jagielski pSizeBox->SetText( String() );
1135*b1cdbd2cSJim Jagielski if ( eState <= SFX_ITEM_READONLY )
1136*b1cdbd2cSJim Jagielski {
1137*b1cdbd2cSJim Jagielski pSizeBox->Disable( );
1138*b1cdbd2cSJim Jagielski pSizeLabel->Disable( );
1139*b1cdbd2cSJim Jagielski }
1140*b1cdbd2cSJim Jagielski }
1141*b1cdbd2cSJim Jagielski
1142*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1143*b1cdbd2cSJim Jagielski {
1144*b1cdbd2cSJim Jagielski case Western : nWhich = GetWhich( SID_ATTR_CHAR_LANGUAGE ); break;
1145*b1cdbd2cSJim Jagielski case Asian : nWhich = GetWhich( SID_ATTR_CHAR_CJK_LANGUAGE ); break;
1146*b1cdbd2cSJim Jagielski case Ctl : nWhich = GetWhich( SID_ATTR_CHAR_CTL_LANGUAGE ); break;
1147*b1cdbd2cSJim Jagielski }
1148*b1cdbd2cSJim Jagielski pLangBox->SetNoSelection();
1149*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
1150*b1cdbd2cSJim Jagielski
1151*b1cdbd2cSJim Jagielski switch ( eState )
1152*b1cdbd2cSJim Jagielski {
1153*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
1154*b1cdbd2cSJim Jagielski pLangFT->Hide();
1155*b1cdbd2cSJim Jagielski pLangBox->Hide();
1156*b1cdbd2cSJim Jagielski break;
1157*b1cdbd2cSJim Jagielski
1158*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
1159*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
1160*b1cdbd2cSJim Jagielski pLangFT->Disable();
1161*b1cdbd2cSJim Jagielski pLangBox->Disable();
1162*b1cdbd2cSJim Jagielski break;
1163*b1cdbd2cSJim Jagielski
1164*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
1165*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
1166*b1cdbd2cSJim Jagielski {
1167*b1cdbd2cSJim Jagielski const SvxLanguageItem& rItem = (SvxLanguageItem&)rSet.Get( nWhich );
1168*b1cdbd2cSJim Jagielski LanguageType eLangType = (LanguageType)rItem.GetValue();
1169*b1cdbd2cSJim Jagielski DBG_ASSERT( eLangType != LANGUAGE_SYSTEM, "LANGUAGE_SYSTEM not allowed" );
1170*b1cdbd2cSJim Jagielski if ( eLangType != LANGUAGE_DONTKNOW )
1171*b1cdbd2cSJim Jagielski pLangBox->SelectLanguage( eLangType );
1172*b1cdbd2cSJim Jagielski break;
1173*b1cdbd2cSJim Jagielski }
1174*b1cdbd2cSJim Jagielski }
1175*b1cdbd2cSJim Jagielski
1176*b1cdbd2cSJim Jagielski if ( Western == eLangGrp )
1177*b1cdbd2cSJim Jagielski m_aFontTypeFT.SetText( pFontList->GetFontMapText(
1178*b1cdbd2cSJim Jagielski pFontList->Get( pNameBox->GetText(), pStyleBox->GetText() ) ) );
1179*b1cdbd2cSJim Jagielski
1180*b1cdbd2cSJim Jagielski // save these settings
1181*b1cdbd2cSJim Jagielski pNameBox->SaveValue();
1182*b1cdbd2cSJim Jagielski pStyleBox->SaveValue();
1183*b1cdbd2cSJim Jagielski pSizeBox->SaveValue();
1184*b1cdbd2cSJim Jagielski pLangBox->SaveValue();
1185*b1cdbd2cSJim Jagielski }
1186*b1cdbd2cSJim Jagielski
1187*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1188*b1cdbd2cSJim Jagielski
FillItemSet_Impl(SfxItemSet & rSet,LanguageGroup eLangGrp)1189*b1cdbd2cSJim Jagielski sal_Bool SvxCharNamePage::FillItemSet_Impl( SfxItemSet& rSet, LanguageGroup eLangGrp )
1190*b1cdbd2cSJim Jagielski {
1191*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False;
1192*b1cdbd2cSJim Jagielski
1193*b1cdbd2cSJim Jagielski FontNameBox* pNameBox = NULL;
1194*b1cdbd2cSJim Jagielski FontStyleBox* pStyleBox = NULL;
1195*b1cdbd2cSJim Jagielski FontSizeBox* pSizeBox = NULL;
1196*b1cdbd2cSJim Jagielski SvxLanguageBox* pLangBox = NULL;
1197*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = 0;
1198*b1cdbd2cSJim Jagielski sal_uInt16 nSlot = 0;
1199*b1cdbd2cSJim Jagielski
1200*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1201*b1cdbd2cSJim Jagielski {
1202*b1cdbd2cSJim Jagielski case Western :
1203*b1cdbd2cSJim Jagielski pNameBox = m_pWestFontNameLB;
1204*b1cdbd2cSJim Jagielski pStyleBox = m_pWestFontStyleLB;
1205*b1cdbd2cSJim Jagielski pSizeBox = m_pWestFontSizeLB;
1206*b1cdbd2cSJim Jagielski pLangBox = m_pWestFontLanguageLB;
1207*b1cdbd2cSJim Jagielski nSlot = SID_ATTR_CHAR_FONT;
1208*b1cdbd2cSJim Jagielski break;
1209*b1cdbd2cSJim Jagielski
1210*b1cdbd2cSJim Jagielski case Asian :
1211*b1cdbd2cSJim Jagielski pNameBox = m_pEastFontNameLB;
1212*b1cdbd2cSJim Jagielski pStyleBox = m_pEastFontStyleLB;
1213*b1cdbd2cSJim Jagielski pSizeBox = m_pEastFontSizeLB;
1214*b1cdbd2cSJim Jagielski pLangBox = m_pEastFontLanguageLB;
1215*b1cdbd2cSJim Jagielski nSlot = SID_ATTR_CHAR_CJK_FONT;
1216*b1cdbd2cSJim Jagielski break;
1217*b1cdbd2cSJim Jagielski
1218*b1cdbd2cSJim Jagielski case Ctl :
1219*b1cdbd2cSJim Jagielski pNameBox = m_pCTLFontNameLB;
1220*b1cdbd2cSJim Jagielski pStyleBox = m_pCTLFontStyleLB;
1221*b1cdbd2cSJim Jagielski pSizeBox = m_pCTLFontSizeLB;
1222*b1cdbd2cSJim Jagielski pLangBox = m_pCTLFontLanguageLB;
1223*b1cdbd2cSJim Jagielski nSlot = SID_ATTR_CHAR_CTL_FONT;
1224*b1cdbd2cSJim Jagielski break;
1225*b1cdbd2cSJim Jagielski }
1226*b1cdbd2cSJim Jagielski
1227*b1cdbd2cSJim Jagielski nWhich = GetWhich( nSlot );
1228*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem = NULL;
1229*b1cdbd2cSJim Jagielski const SfxItemSet& rOldSet = GetItemSet();
1230*b1cdbd2cSJim Jagielski const SfxPoolItem* pOld = NULL;
1231*b1cdbd2cSJim Jagielski
1232*b1cdbd2cSJim Jagielski const SfxItemSet* pExampleSet = GetTabDialog() ? GetTabDialog()->GetExampleSet() : NULL;
1233*b1cdbd2cSJim Jagielski
1234*b1cdbd2cSJim Jagielski FASTBOOL bChanged = sal_True;
1235*b1cdbd2cSJim Jagielski const String& rFontName = pNameBox->GetText();
1236*b1cdbd2cSJim Jagielski const FontList* pFontList = GetFontList();
1237*b1cdbd2cSJim Jagielski String aStyleBoxText =pStyleBox->GetText();
1238*b1cdbd2cSJim Jagielski sal_uInt16 nEntryPos = pStyleBox->GetEntryPos( aStyleBoxText );
1239*b1cdbd2cSJim Jagielski if ( nEntryPos >= m_pImpl->m_nExtraEntryPos )
1240*b1cdbd2cSJim Jagielski aStyleBoxText.Erase();
1241*b1cdbd2cSJim Jagielski FontInfo aInfo( pFontList->Get( rFontName, aStyleBoxText ) );
1242*b1cdbd2cSJim Jagielski SvxFontItem aFontItem( aInfo.GetFamily(), aInfo.GetName(), aInfo.GetStyleName(),
1243*b1cdbd2cSJim Jagielski aInfo.GetPitch(), aInfo.GetCharSet(), nWhich );
1244*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, nSlot );
1245*b1cdbd2cSJim Jagielski
1246*b1cdbd2cSJim Jagielski if ( pOld )
1247*b1cdbd2cSJim Jagielski {
1248*b1cdbd2cSJim Jagielski const SvxFontItem& rItem = *( (const SvxFontItem*)pOld );
1249*b1cdbd2cSJim Jagielski
1250*b1cdbd2cSJim Jagielski if ( rItem.GetFamilyName() == aFontItem.GetFamilyName() )
1251*b1cdbd2cSJim Jagielski bChanged = sal_False;
1252*b1cdbd2cSJim Jagielski }
1253*b1cdbd2cSJim Jagielski
1254*b1cdbd2cSJim Jagielski if ( !bChanged )
1255*b1cdbd2cSJim Jagielski bChanged = !pNameBox->GetSavedValue().Len();
1256*b1cdbd2cSJim Jagielski
1257*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet &&
1258*b1cdbd2cSJim Jagielski pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
1259*b1cdbd2cSJim Jagielski ( (SvxFontItem*)pItem )->GetFamilyName() != aFontItem.GetFamilyName() )
1260*b1cdbd2cSJim Jagielski bChanged = sal_True;
1261*b1cdbd2cSJim Jagielski
1262*b1cdbd2cSJim Jagielski if ( bChanged && rFontName.Len() )
1263*b1cdbd2cSJim Jagielski {
1264*b1cdbd2cSJim Jagielski rSet.Put( aFontItem );
1265*b1cdbd2cSJim Jagielski bModified |= sal_True;
1266*b1cdbd2cSJim Jagielski }
1267*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1268*b1cdbd2cSJim Jagielski rSet.ClearItem( nWhich );
1269*b1cdbd2cSJim Jagielski
1270*b1cdbd2cSJim Jagielski
1271*b1cdbd2cSJim Jagielski bChanged = sal_True;
1272*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1273*b1cdbd2cSJim Jagielski {
1274*b1cdbd2cSJim Jagielski case Western : nSlot = SID_ATTR_CHAR_WEIGHT; break;
1275*b1cdbd2cSJim Jagielski case Asian : nSlot = SID_ATTR_CHAR_CJK_WEIGHT; break;
1276*b1cdbd2cSJim Jagielski case Ctl : nSlot = SID_ATTR_CHAR_CTL_WEIGHT; break;
1277*b1cdbd2cSJim Jagielski }
1278*b1cdbd2cSJim Jagielski nWhich = GetWhich( nSlot );
1279*b1cdbd2cSJim Jagielski FontWeight eWeight = aInfo.GetWeight();
1280*b1cdbd2cSJim Jagielski if ( nEntryPos >= m_pImpl->m_nExtraEntryPos )
1281*b1cdbd2cSJim Jagielski eWeight = WEIGHT_NORMAL;
1282*b1cdbd2cSJim Jagielski SvxWeightItem aWeightItem( eWeight, nWhich );
1283*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, nSlot );
1284*b1cdbd2cSJim Jagielski
1285*b1cdbd2cSJim Jagielski if ( pOld )
1286*b1cdbd2cSJim Jagielski {
1287*b1cdbd2cSJim Jagielski const SvxWeightItem& rItem = *( (const SvxWeightItem*)pOld );
1288*b1cdbd2cSJim Jagielski
1289*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == aWeightItem.GetValue() )
1290*b1cdbd2cSJim Jagielski bChanged = sal_False;
1291*b1cdbd2cSJim Jagielski }
1292*b1cdbd2cSJim Jagielski
1293*b1cdbd2cSJim Jagielski if ( !bChanged )
1294*b1cdbd2cSJim Jagielski {
1295*b1cdbd2cSJim Jagielski bChanged = !pStyleBox->GetSavedValue().Len();
1296*b1cdbd2cSJim Jagielski
1297*b1cdbd2cSJim Jagielski if ( m_pImpl->m_bInSearchMode && bChanged &&
1298*b1cdbd2cSJim Jagielski aInfo.GetWeight() == WEIGHT_NORMAL && aInfo.GetItalic() != ITALIC_NONE )
1299*b1cdbd2cSJim Jagielski bChanged = sal_False;
1300*b1cdbd2cSJim Jagielski }
1301*b1cdbd2cSJim Jagielski
1302*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet &&
1303*b1cdbd2cSJim Jagielski pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
1304*b1cdbd2cSJim Jagielski ( (SvxWeightItem*)pItem )->GetValue() != aWeightItem.GetValue() )
1305*b1cdbd2cSJim Jagielski bChanged = sal_True;
1306*b1cdbd2cSJim Jagielski
1307*b1cdbd2cSJim Jagielski if ( nEntryPos >= m_pImpl->m_nExtraEntryPos )
1308*b1cdbd2cSJim Jagielski bChanged = ( nEntryPos == m_pImpl->m_nExtraEntryPos );
1309*b1cdbd2cSJim Jagielski
1310*b1cdbd2cSJim Jagielski String aText( pStyleBox->GetText() ); // Tristate, dann Text leer
1311*b1cdbd2cSJim Jagielski
1312*b1cdbd2cSJim Jagielski if ( bChanged && aText.Len() )
1313*b1cdbd2cSJim Jagielski {
1314*b1cdbd2cSJim Jagielski rSet.Put( aWeightItem );
1315*b1cdbd2cSJim Jagielski bModified |= sal_True;
1316*b1cdbd2cSJim Jagielski }
1317*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1318*b1cdbd2cSJim Jagielski CLEARTITEM;
1319*b1cdbd2cSJim Jagielski
1320*b1cdbd2cSJim Jagielski bChanged = sal_True;
1321*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1322*b1cdbd2cSJim Jagielski {
1323*b1cdbd2cSJim Jagielski case Western : nSlot = SID_ATTR_CHAR_POSTURE; break;
1324*b1cdbd2cSJim Jagielski case Asian : nSlot = SID_ATTR_CHAR_CJK_POSTURE; break;
1325*b1cdbd2cSJim Jagielski case Ctl : nSlot = SID_ATTR_CHAR_CTL_POSTURE; break;
1326*b1cdbd2cSJim Jagielski }
1327*b1cdbd2cSJim Jagielski nWhich = GetWhich( nSlot );
1328*b1cdbd2cSJim Jagielski FontItalic eItalic = aInfo.GetItalic();
1329*b1cdbd2cSJim Jagielski if ( nEntryPos >= m_pImpl->m_nExtraEntryPos )
1330*b1cdbd2cSJim Jagielski eItalic = ITALIC_NONE;
1331*b1cdbd2cSJim Jagielski SvxPostureItem aPostureItem( eItalic, nWhich );
1332*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, nSlot );
1333*b1cdbd2cSJim Jagielski
1334*b1cdbd2cSJim Jagielski if ( pOld )
1335*b1cdbd2cSJim Jagielski {
1336*b1cdbd2cSJim Jagielski const SvxPostureItem& rItem = *( (const SvxPostureItem*)pOld );
1337*b1cdbd2cSJim Jagielski
1338*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == aPostureItem.GetValue() )
1339*b1cdbd2cSJim Jagielski bChanged = sal_False;
1340*b1cdbd2cSJim Jagielski }
1341*b1cdbd2cSJim Jagielski
1342*b1cdbd2cSJim Jagielski if ( !bChanged )
1343*b1cdbd2cSJim Jagielski {
1344*b1cdbd2cSJim Jagielski bChanged = !pStyleBox->GetSavedValue().Len();
1345*b1cdbd2cSJim Jagielski
1346*b1cdbd2cSJim Jagielski if ( m_pImpl->m_bInSearchMode && bChanged &&
1347*b1cdbd2cSJim Jagielski aInfo.GetItalic() == ITALIC_NONE && aInfo.GetWeight() != WEIGHT_NORMAL )
1348*b1cdbd2cSJim Jagielski bChanged = sal_False;
1349*b1cdbd2cSJim Jagielski }
1350*b1cdbd2cSJim Jagielski
1351*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet &&
1352*b1cdbd2cSJim Jagielski pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
1353*b1cdbd2cSJim Jagielski ( (SvxPostureItem*)pItem )->GetValue() != aPostureItem.GetValue() )
1354*b1cdbd2cSJim Jagielski bChanged = sal_True;
1355*b1cdbd2cSJim Jagielski
1356*b1cdbd2cSJim Jagielski if ( nEntryPos >= m_pImpl->m_nExtraEntryPos )
1357*b1cdbd2cSJim Jagielski bChanged = ( nEntryPos == ( m_pImpl->m_nExtraEntryPos + 1 ) );
1358*b1cdbd2cSJim Jagielski
1359*b1cdbd2cSJim Jagielski if ( bChanged && aText.Len() )
1360*b1cdbd2cSJim Jagielski {
1361*b1cdbd2cSJim Jagielski rSet.Put( aPostureItem );
1362*b1cdbd2cSJim Jagielski bModified |= sal_True;
1363*b1cdbd2cSJim Jagielski }
1364*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1365*b1cdbd2cSJim Jagielski CLEARTITEM;
1366*b1cdbd2cSJim Jagielski
1367*b1cdbd2cSJim Jagielski // FontSize
1368*b1cdbd2cSJim Jagielski long nSize = static_cast<long>(pSizeBox->GetValue());
1369*b1cdbd2cSJim Jagielski
1370*b1cdbd2cSJim Jagielski if ( !pSizeBox->GetText().Len() ) // GetValue() gibt dann Min-Wert zurueck
1371*b1cdbd2cSJim Jagielski nSize = 0;
1372*b1cdbd2cSJim Jagielski long nSavedSize = pSizeBox->GetSavedValue().ToInt32();
1373*b1cdbd2cSJim Jagielski FASTBOOL bRel = sal_True;
1374*b1cdbd2cSJim Jagielski
1375*b1cdbd2cSJim Jagielski if ( !pSizeBox->IsRelative() )
1376*b1cdbd2cSJim Jagielski {
1377*b1cdbd2cSJim Jagielski nSavedSize *= 10;
1378*b1cdbd2cSJim Jagielski bRel = sal_False;
1379*b1cdbd2cSJim Jagielski }
1380*b1cdbd2cSJim Jagielski
1381*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1382*b1cdbd2cSJim Jagielski {
1383*b1cdbd2cSJim Jagielski case Western : nSlot = SID_ATTR_CHAR_FONTHEIGHT; break;
1384*b1cdbd2cSJim Jagielski case Asian : nSlot = SID_ATTR_CHAR_CJK_FONTHEIGHT; break;
1385*b1cdbd2cSJim Jagielski case Ctl : nSlot = SID_ATTR_CHAR_CTL_FONTHEIGHT; break;
1386*b1cdbd2cSJim Jagielski }
1387*b1cdbd2cSJim Jagielski nWhich = GetWhich( nSlot );
1388*b1cdbd2cSJim Jagielski const SvxFontHeightItem* pOldHeight = (const SvxFontHeightItem*)GetOldItem( rSet, nSlot );
1389*b1cdbd2cSJim Jagielski bChanged = ( nSize != nSavedSize );
1390*b1cdbd2cSJim Jagielski
1391*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet &&
1392*b1cdbd2cSJim Jagielski pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET )
1393*b1cdbd2cSJim Jagielski {
1394*b1cdbd2cSJim Jagielski float fSize = (float)nSize / 10;
1395*b1cdbd2cSJim Jagielski long nVal = CalcToUnit( fSize, rSet.GetPool()->GetMetric( nWhich ) );
1396*b1cdbd2cSJim Jagielski if ( ( (SvxFontHeightItem*)pItem )->GetHeight() != (sal_uInt32)nVal )
1397*b1cdbd2cSJim Jagielski bChanged = sal_True;
1398*b1cdbd2cSJim Jagielski }
1399*b1cdbd2cSJim Jagielski
1400*b1cdbd2cSJim Jagielski if ( bChanged || !pOldHeight ||
1401*b1cdbd2cSJim Jagielski bRel != ( SFX_MAPUNIT_RELATIVE != pOldHeight->GetPropUnit() || 100 != pOldHeight->GetProp() ) )
1402*b1cdbd2cSJim Jagielski {
1403*b1cdbd2cSJim Jagielski SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich );
1404*b1cdbd2cSJim Jagielski if ( pSizeBox->IsRelative() )
1405*b1cdbd2cSJim Jagielski {
1406*b1cdbd2cSJim Jagielski DBG_ASSERT( GetItemSet().GetParent(), "No parent set" );
1407*b1cdbd2cSJim Jagielski const SvxFontHeightItem& rOldItem =
1408*b1cdbd2cSJim Jagielski (const SvxFontHeightItem&)GetItemSet().GetParent()->Get( nWhich );
1409*b1cdbd2cSJim Jagielski
1410*b1cdbd2cSJim Jagielski SvxFontHeightItem aHeight( 240, 100, nWhich );
1411*b1cdbd2cSJim Jagielski if ( pSizeBox->IsPtRelative() )
1412*b1cdbd2cSJim Jagielski aHeight.SetHeight( rOldItem.GetHeight(), (sal_uInt16)( nSize / 10 ), SFX_MAPUNIT_POINT, eUnit );
1413*b1cdbd2cSJim Jagielski else
1414*b1cdbd2cSJim Jagielski aHeight.SetHeight( rOldItem.GetHeight(), (sal_uInt16)nSize, SFX_MAPUNIT_RELATIVE );
1415*b1cdbd2cSJim Jagielski rSet.Put( aHeight );
1416*b1cdbd2cSJim Jagielski }
1417*b1cdbd2cSJim Jagielski else
1418*b1cdbd2cSJim Jagielski {
1419*b1cdbd2cSJim Jagielski float fSize = (float)nSize / 10;
1420*b1cdbd2cSJim Jagielski rSet.Put( SvxFontHeightItem( CalcToUnit( fSize, eUnit ), 100, nWhich ) );
1421*b1cdbd2cSJim Jagielski }
1422*b1cdbd2cSJim Jagielski bModified |= sal_True;
1423*b1cdbd2cSJim Jagielski }
1424*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1425*b1cdbd2cSJim Jagielski CLEARTITEM;
1426*b1cdbd2cSJim Jagielski
1427*b1cdbd2cSJim Jagielski bChanged = sal_True;
1428*b1cdbd2cSJim Jagielski switch ( eLangGrp )
1429*b1cdbd2cSJim Jagielski {
1430*b1cdbd2cSJim Jagielski case Western : nSlot = SID_ATTR_CHAR_LANGUAGE; break;
1431*b1cdbd2cSJim Jagielski case Asian : nSlot = SID_ATTR_CHAR_CJK_LANGUAGE; break;
1432*b1cdbd2cSJim Jagielski case Ctl : nSlot = SID_ATTR_CHAR_CTL_LANGUAGE; break;
1433*b1cdbd2cSJim Jagielski }
1434*b1cdbd2cSJim Jagielski nWhich = GetWhich( nSlot );
1435*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, nSlot );
1436*b1cdbd2cSJim Jagielski sal_uInt16 nLangPos = pLangBox->GetSelectEntryPos();
1437*b1cdbd2cSJim Jagielski LanguageType eLangType = (LanguageType)(sal_uLong)pLangBox->GetEntryData( nLangPos );
1438*b1cdbd2cSJim Jagielski
1439*b1cdbd2cSJim Jagielski if ( pOld )
1440*b1cdbd2cSJim Jagielski {
1441*b1cdbd2cSJim Jagielski const SvxLanguageItem& rItem = *( (const SvxLanguageItem*)pOld );
1442*b1cdbd2cSJim Jagielski
1443*b1cdbd2cSJim Jagielski if ( nLangPos == LISTBOX_ENTRY_NOTFOUND || eLangType == (LanguageType)rItem.GetValue() )
1444*b1cdbd2cSJim Jagielski bChanged = sal_False;
1445*b1cdbd2cSJim Jagielski }
1446*b1cdbd2cSJim Jagielski
1447*b1cdbd2cSJim Jagielski if ( !bChanged )
1448*b1cdbd2cSJim Jagielski bChanged = ( pLangBox->GetSavedValue() == LISTBOX_ENTRY_NOTFOUND );
1449*b1cdbd2cSJim Jagielski
1450*b1cdbd2cSJim Jagielski if ( bChanged && nLangPos != LISTBOX_ENTRY_NOTFOUND )
1451*b1cdbd2cSJim Jagielski {
1452*b1cdbd2cSJim Jagielski rSet.Put( SvxLanguageItem( eLangType, nWhich ) );
1453*b1cdbd2cSJim Jagielski bModified |= sal_True;
1454*b1cdbd2cSJim Jagielski }
1455*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1456*b1cdbd2cSJim Jagielski CLEARTITEM;
1457*b1cdbd2cSJim Jagielski
1458*b1cdbd2cSJim Jagielski return bModified;
1459*b1cdbd2cSJim Jagielski }
1460*b1cdbd2cSJim Jagielski
1461*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1462*b1cdbd2cSJim Jagielski
ResetColor_Impl(const SfxItemSet & rSet)1463*b1cdbd2cSJim Jagielski void SvxCharNamePage::ResetColor_Impl( const SfxItemSet& rSet )
1464*b1cdbd2cSJim Jagielski {
1465*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
1466*b1cdbd2cSJim Jagielski SfxItemState eState = rSet.GetItemState( nWhich );
1467*b1cdbd2cSJim Jagielski
1468*b1cdbd2cSJim Jagielski switch ( eState )
1469*b1cdbd2cSJim Jagielski {
1470*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
1471*b1cdbd2cSJim Jagielski m_pColorLB->Hide();
1472*b1cdbd2cSJim Jagielski break;
1473*b1cdbd2cSJim Jagielski
1474*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
1475*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
1476*b1cdbd2cSJim Jagielski m_pColorLB->Disable();
1477*b1cdbd2cSJim Jagielski break;
1478*b1cdbd2cSJim Jagielski
1479*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
1480*b1cdbd2cSJim Jagielski m_pColorLB->SetNoSelection();
1481*b1cdbd2cSJim Jagielski break;
1482*b1cdbd2cSJim Jagielski
1483*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
1484*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
1485*b1cdbd2cSJim Jagielski {
1486*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
1487*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
1488*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
1489*b1cdbd2cSJim Jagielski const SvxColorItem& rItem = (SvxColorItem&)rSet.Get( nWhich );
1490*b1cdbd2cSJim Jagielski Color aColor = rItem.GetValue();
1491*b1cdbd2cSJim Jagielski rFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );
1492*b1cdbd2cSJim Jagielski rCJKFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );
1493*b1cdbd2cSJim Jagielski rCTLFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );
1494*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
1495*b1cdbd2cSJim Jagielski sal_uInt16 nSelPos = m_pColorLB->GetEntryPos( aColor );
1496*b1cdbd2cSJim Jagielski if ( nSelPos == LISTBOX_ENTRY_NOTFOUND && aColor == Color( COL_TRANSPARENT ) )
1497*b1cdbd2cSJim Jagielski nSelPos = m_pColorLB->GetEntryPos( m_pImpl->m_aTransparentText );
1498*b1cdbd2cSJim Jagielski
1499*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
1500*b1cdbd2cSJim Jagielski m_pColorLB->SelectEntryPos( nSelPos );
1501*b1cdbd2cSJim Jagielski else
1502*b1cdbd2cSJim Jagielski {
1503*b1cdbd2cSJim Jagielski nSelPos = m_pColorLB->GetEntryPos( aColor );
1504*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
1505*b1cdbd2cSJim Jagielski m_pColorLB->SelectEntryPos( nSelPos );
1506*b1cdbd2cSJim Jagielski else
1507*b1cdbd2cSJim Jagielski m_pColorLB->SelectEntryPos(
1508*b1cdbd2cSJim Jagielski m_pColorLB->InsertEntry( aColor, String( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
1509*b1cdbd2cSJim Jagielski }
1510*b1cdbd2cSJim Jagielski break;
1511*b1cdbd2cSJim Jagielski }
1512*b1cdbd2cSJim Jagielski }
1513*b1cdbd2cSJim Jagielski }
1514*b1cdbd2cSJim Jagielski
1515*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1516*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharNamePage,UpdateHdl_Impl,Timer *,EMPTYARG)1517*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharNamePage, UpdateHdl_Impl, Timer*, EMPTYARG )
1518*b1cdbd2cSJim Jagielski {
1519*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
1520*b1cdbd2cSJim Jagielski return 0;
1521*b1cdbd2cSJim Jagielski }
1522*b1cdbd2cSJim Jagielski
1523*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1524*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharNamePage,FontModifyHdl_Impl,void *,pNameBox)1525*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharNamePage, FontModifyHdl_Impl, void*, pNameBox )
1526*b1cdbd2cSJim Jagielski {
1527*b1cdbd2cSJim Jagielski m_pImpl->m_aUpdateTimer.Start();
1528*b1cdbd2cSJim Jagielski
1529*b1cdbd2cSJim Jagielski if ( m_pWestFontNameLB == pNameBox || m_pEastFontNameLB == pNameBox || m_pCTLFontNameLB == pNameBox )
1530*b1cdbd2cSJim Jagielski {
1531*b1cdbd2cSJim Jagielski FillStyleBox_Impl( (FontNameBox*)pNameBox );
1532*b1cdbd2cSJim Jagielski FillSizeBox_Impl( (FontNameBox*)pNameBox );
1533*b1cdbd2cSJim Jagielski }
1534*b1cdbd2cSJim Jagielski return 0;
1535*b1cdbd2cSJim Jagielski }
1536*b1cdbd2cSJim Jagielski
1537*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1538*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharNamePage,ColorBoxSelectHdl_Impl,ColorListBox *,pBox)1539*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharNamePage, ColorBoxSelectHdl_Impl, ColorListBox*, pBox )
1540*b1cdbd2cSJim Jagielski {
1541*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
1542*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
1543*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
1544*b1cdbd2cSJim Jagielski Color aSelectedColor;
1545*b1cdbd2cSJim Jagielski if ( pBox->GetSelectEntry() == m_pImpl->m_aTransparentText )
1546*b1cdbd2cSJim Jagielski aSelectedColor = Color( COL_TRANSPARENT );
1547*b1cdbd2cSJim Jagielski else
1548*b1cdbd2cSJim Jagielski aSelectedColor = pBox->GetSelectEntryColor();
1549*b1cdbd2cSJim Jagielski rFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
1550*b1cdbd2cSJim Jagielski rCJKFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
1551*b1cdbd2cSJim Jagielski rCTLFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
1552*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
1553*b1cdbd2cSJim Jagielski return 0;
1554*b1cdbd2cSJim Jagielski }
1555*b1cdbd2cSJim Jagielski
1556*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1557*b1cdbd2cSJim Jagielski
ActivatePage(const SfxItemSet & rSet)1558*b1cdbd2cSJim Jagielski void SvxCharNamePage::ActivatePage( const SfxItemSet& rSet )
1559*b1cdbd2cSJim Jagielski {
1560*b1cdbd2cSJim Jagielski SvxCharBasePage::ActivatePage( rSet );
1561*b1cdbd2cSJim Jagielski
1562*b1cdbd2cSJim Jagielski UpdatePreview_Impl(); // instead of asynchronous calling in ctor
1563*b1cdbd2cSJim Jagielski }
1564*b1cdbd2cSJim Jagielski
1565*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1566*b1cdbd2cSJim Jagielski
DeactivatePage(SfxItemSet * _pSet)1567*b1cdbd2cSJim Jagielski int SvxCharNamePage::DeactivatePage( SfxItemSet* _pSet )
1568*b1cdbd2cSJim Jagielski {
1569*b1cdbd2cSJim Jagielski if ( _pSet )
1570*b1cdbd2cSJim Jagielski FillItemSet( *_pSet );
1571*b1cdbd2cSJim Jagielski return LEAVE_PAGE;
1572*b1cdbd2cSJim Jagielski }
1573*b1cdbd2cSJim Jagielski
1574*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1575*b1cdbd2cSJim Jagielski
Create(Window * pParent,const SfxItemSet & rSet)1576*b1cdbd2cSJim Jagielski SfxTabPage* SvxCharNamePage::Create( Window* pParent, const SfxItemSet& rSet )
1577*b1cdbd2cSJim Jagielski {
1578*b1cdbd2cSJim Jagielski return new SvxCharNamePage( pParent, rSet );
1579*b1cdbd2cSJim Jagielski }
1580*b1cdbd2cSJim Jagielski
1581*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1582*b1cdbd2cSJim Jagielski
GetRanges()1583*b1cdbd2cSJim Jagielski sal_uInt16* SvxCharNamePage::GetRanges()
1584*b1cdbd2cSJim Jagielski {
1585*b1cdbd2cSJim Jagielski return pNameRanges;
1586*b1cdbd2cSJim Jagielski }
1587*b1cdbd2cSJim Jagielski
1588*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1589*b1cdbd2cSJim Jagielski
Reset(const SfxItemSet & rSet)1590*b1cdbd2cSJim Jagielski void SvxCharNamePage::Reset( const SfxItemSet& rSet )
1591*b1cdbd2cSJim Jagielski {
1592*b1cdbd2cSJim Jagielski Reset_Impl( rSet, Western );
1593*b1cdbd2cSJim Jagielski Reset_Impl( rSet, Asian );
1594*b1cdbd2cSJim Jagielski Reset_Impl( rSet, Ctl );
1595*b1cdbd2cSJim Jagielski ResetColor_Impl( rSet );
1596*b1cdbd2cSJim Jagielski m_pColorLB->SaveValue();
1597*b1cdbd2cSJim Jagielski
1598*b1cdbd2cSJim Jagielski SetPrevFontWidthScale( rSet );
1599*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
1600*b1cdbd2cSJim Jagielski }
1601*b1cdbd2cSJim Jagielski
1602*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1603*b1cdbd2cSJim Jagielski
FillItemSet(SfxItemSet & rSet)1604*b1cdbd2cSJim Jagielski sal_Bool SvxCharNamePage::FillItemSet( SfxItemSet& rSet )
1605*b1cdbd2cSJim Jagielski {
1606*b1cdbd2cSJim Jagielski sal_Bool bModified = FillItemSet_Impl( rSet, Western );
1607*b1cdbd2cSJim Jagielski bModified |= FillItemSet_Impl( rSet, Asian );
1608*b1cdbd2cSJim Jagielski bModified |= FillItemSet_Impl( rSet, Ctl );
1609*b1cdbd2cSJim Jagielski return bModified;
1610*b1cdbd2cSJim Jagielski }
1611*b1cdbd2cSJim Jagielski
1612*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1613*b1cdbd2cSJim Jagielski
SetFontList(const SvxFontListItem & rItem)1614*b1cdbd2cSJim Jagielski void SvxCharNamePage::SetFontList( const SvxFontListItem& rItem )
1615*b1cdbd2cSJim Jagielski {
1616*b1cdbd2cSJim Jagielski if ( m_pImpl->m_bMustDelete )
1617*b1cdbd2cSJim Jagielski {
1618*b1cdbd2cSJim Jagielski delete m_pImpl->m_pFontList;
1619*b1cdbd2cSJim Jagielski }
1620*b1cdbd2cSJim Jagielski m_pImpl->m_pFontList = rItem.GetFontList()->Clone();
1621*b1cdbd2cSJim Jagielski m_pImpl->m_bMustDelete = sal_True;
1622*b1cdbd2cSJim Jagielski }
1623*b1cdbd2cSJim Jagielski
1624*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1625*b1cdbd2cSJim Jagielski namespace
1626*b1cdbd2cSJim Jagielski {
enableRelativeMode(SvxCharNamePage * _pPage,FontSizeBox * _pFontSizeLB,sal_uInt16 _nHeightWhich)1627*b1cdbd2cSJim Jagielski void enableRelativeMode( SvxCharNamePage* _pPage, FontSizeBox* _pFontSizeLB, sal_uInt16 _nHeightWhich )
1628*b1cdbd2cSJim Jagielski {
1629*b1cdbd2cSJim Jagielski _pFontSizeLB->EnableRelativeMode( 5, 995, 5 ); // min 5%, max 995%, step 5
1630*b1cdbd2cSJim Jagielski
1631*b1cdbd2cSJim Jagielski const SvxFontHeightItem& rHeightItem =
1632*b1cdbd2cSJim Jagielski (SvxFontHeightItem&)_pPage->GetItemSet().GetParent()->Get( _nHeightWhich );
1633*b1cdbd2cSJim Jagielski SfxMapUnit eUnit = _pPage->GetItemSet().GetPool()->GetMetric( _nHeightWhich );
1634*b1cdbd2cSJim Jagielski short nCurHeight =
1635*b1cdbd2cSJim Jagielski static_cast< short >( CalcToPoint( rHeightItem.GetHeight(), eUnit, 1 ) * 10 );
1636*b1cdbd2cSJim Jagielski
1637*b1cdbd2cSJim Jagielski // ausgehend von der akt. Hoehe:
1638*b1cdbd2cSJim Jagielski // - negativ bis minimal 2 pt
1639*b1cdbd2cSJim Jagielski // - positiv bis maximal 999 pt
1640*b1cdbd2cSJim Jagielski _pFontSizeLB->EnablePtRelativeMode( sal::static_int_cast< short >(-(nCurHeight - 20)), (9999 - nCurHeight), 10 );
1641*b1cdbd2cSJim Jagielski }
1642*b1cdbd2cSJim Jagielski }
1643*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
1644*b1cdbd2cSJim Jagielski
EnableRelativeMode()1645*b1cdbd2cSJim Jagielski void SvxCharNamePage::EnableRelativeMode()
1646*b1cdbd2cSJim Jagielski {
1647*b1cdbd2cSJim Jagielski DBG_ASSERT( GetItemSet().GetParent(), "RelativeMode, but no ParentSet!" );
1648*b1cdbd2cSJim Jagielski enableRelativeMode(this,m_pWestFontSizeLB,GetWhich( SID_ATTR_CHAR_FONTHEIGHT ));
1649*b1cdbd2cSJim Jagielski enableRelativeMode(this,m_pEastFontSizeLB,GetWhich( SID_ATTR_CHAR_CJK_FONTHEIGHT ));
1650*b1cdbd2cSJim Jagielski enableRelativeMode(this,m_pCTLFontSizeLB,GetWhich( SID_ATTR_CHAR_CTL_FONTHEIGHT ));
1651*b1cdbd2cSJim Jagielski }
1652*b1cdbd2cSJim Jagielski
1653*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1654*b1cdbd2cSJim Jagielski
EnableSearchMode()1655*b1cdbd2cSJim Jagielski void SvxCharNamePage::EnableSearchMode()
1656*b1cdbd2cSJim Jagielski {
1657*b1cdbd2cSJim Jagielski m_pImpl->m_bInSearchMode = sal_True;
1658*b1cdbd2cSJim Jagielski }
1659*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
DisableControls(sal_uInt16 nDisable)1660*b1cdbd2cSJim Jagielski void SvxCharNamePage::DisableControls( sal_uInt16 nDisable )
1661*b1cdbd2cSJim Jagielski {
1662*b1cdbd2cSJim Jagielski if ( DISABLE_LANGUAGE & nDisable )
1663*b1cdbd2cSJim Jagielski {
1664*b1cdbd2cSJim Jagielski if ( m_pWestFontLanguageFT ) m_pWestFontLanguageFT->Disable();
1665*b1cdbd2cSJim Jagielski if ( m_pWestFontLanguageLB ) m_pWestFontLanguageLB->Disable();
1666*b1cdbd2cSJim Jagielski if ( m_pEastFontLanguageFT ) m_pEastFontLanguageFT->Disable();
1667*b1cdbd2cSJim Jagielski if ( m_pEastFontLanguageLB ) m_pEastFontLanguageLB->Disable();
1668*b1cdbd2cSJim Jagielski if ( m_pCTLFontLanguageFT ) m_pCTLFontLanguageFT->Disable();
1669*b1cdbd2cSJim Jagielski if ( m_pCTLFontLanguageLB ) m_pCTLFontLanguageLB->Disable();
1670*b1cdbd2cSJim Jagielski }
1671*b1cdbd2cSJim Jagielski
1672*b1cdbd2cSJim Jagielski if ( DISABLE_HIDE_LANGUAGE & nDisable )
1673*b1cdbd2cSJim Jagielski {
1674*b1cdbd2cSJim Jagielski if ( m_pWestFontLanguageFT ) m_pWestFontLanguageFT->Hide();
1675*b1cdbd2cSJim Jagielski if ( m_pWestFontLanguageLB ) m_pWestFontLanguageLB->Hide();
1676*b1cdbd2cSJim Jagielski if ( m_pEastFontLanguageFT ) m_pEastFontLanguageFT->Hide();
1677*b1cdbd2cSJim Jagielski if ( m_pEastFontLanguageLB ) m_pEastFontLanguageLB->Hide();
1678*b1cdbd2cSJim Jagielski if ( m_pCTLFontLanguageFT ) m_pCTLFontLanguageFT->Hide();
1679*b1cdbd2cSJim Jagielski if ( m_pCTLFontLanguageLB ) m_pCTLFontLanguageLB->Hide();
1680*b1cdbd2cSJim Jagielski }
1681*b1cdbd2cSJim Jagielski }
1682*b1cdbd2cSJim Jagielski
1683*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
SetPreviewBackgroundToCharacter()1684*b1cdbd2cSJim Jagielski void SvxCharNamePage::SetPreviewBackgroundToCharacter()
1685*b1cdbd2cSJim Jagielski {
1686*b1cdbd2cSJim Jagielski m_bPreviewBackgroundToCharacter = sal_True;
1687*b1cdbd2cSJim Jagielski }
1688*b1cdbd2cSJim Jagielski
1689*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
PageCreated(SfxAllItemSet aSet)1690*b1cdbd2cSJim Jagielski void SvxCharNamePage::PageCreated (SfxAllItemSet aSet) //add CHINA001
1691*b1cdbd2cSJim Jagielski {
1692*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pFontListItem,SvxFontListItem,SID_ATTR_CHAR_FONTLIST,sal_False);
1693*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_FLAG_TYPE,sal_False);
1694*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pDisalbeItem,SfxUInt16Item,SID_DISABLE_CTL,sal_False);
1695*b1cdbd2cSJim Jagielski if (pFontListItem)
1696*b1cdbd2cSJim Jagielski SetFontList(*pFontListItem);
1697*b1cdbd2cSJim Jagielski //CHINA001 SetFontList(pFontListItem->GetFontList());
1698*b1cdbd2cSJim Jagielski
1699*b1cdbd2cSJim Jagielski if (pFlagItem)
1700*b1cdbd2cSJim Jagielski {
1701*b1cdbd2cSJim Jagielski sal_uInt32 nFlags=pFlagItem->GetValue();
1702*b1cdbd2cSJim Jagielski if ( ( nFlags & SVX_RELATIVE_MODE ) == SVX_RELATIVE_MODE )
1703*b1cdbd2cSJim Jagielski EnableRelativeMode();
1704*b1cdbd2cSJim Jagielski if ( ( nFlags & SVX_PREVIEW_CHARACTER ) == SVX_PREVIEW_CHARACTER )
1705*b1cdbd2cSJim Jagielski SetPreviewBackgroundToCharacter();
1706*b1cdbd2cSJim Jagielski }
1707*b1cdbd2cSJim Jagielski if (pDisalbeItem)
1708*b1cdbd2cSJim Jagielski DisableControls(pDisalbeItem->GetValue());
1709*b1cdbd2cSJim Jagielski }
1710*b1cdbd2cSJim Jagielski // class SvxCharEffectsPage ----------------------------------------------
1711*b1cdbd2cSJim Jagielski
SvxCharEffectsPage(Window * pParent,const SfxItemSet & rInSet)1712*b1cdbd2cSJim Jagielski SvxCharEffectsPage::SvxCharEffectsPage( Window* pParent, const SfxItemSet& rInSet ) :
1713*b1cdbd2cSJim Jagielski
1714*b1cdbd2cSJim Jagielski SvxCharBasePage( pParent, CUI_RES( RID_SVXPAGE_CHAR_EFFECTS ), rInSet, WIN_EFFECTS_PREVIEW, FT_EFFECTS_FONTTYPE ),
1715*b1cdbd2cSJim Jagielski
1716*b1cdbd2cSJim Jagielski m_aFontColorFT ( this, CUI_RES( FT_FONTCOLOR ) ),
1717*b1cdbd2cSJim Jagielski m_aFontColorLB ( this, CUI_RES( LB_FONTCOLOR ) ),
1718*b1cdbd2cSJim Jagielski
1719*b1cdbd2cSJim Jagielski m_aEffectsFT ( this, CUI_RES( FT_EFFECTS ) ),
1720*b1cdbd2cSJim Jagielski m_aEffectsLB ( this, 0 ),
1721*b1cdbd2cSJim Jagielski
1722*b1cdbd2cSJim Jagielski m_aEffects2LB ( this, CUI_RES( LB_EFFECTS2 ) ),
1723*b1cdbd2cSJim Jagielski
1724*b1cdbd2cSJim Jagielski m_aReliefFT ( this, CUI_RES( FT_RELIEF ) ),
1725*b1cdbd2cSJim Jagielski m_aReliefLB ( this, CUI_RES( LB_RELIEF ) ),
1726*b1cdbd2cSJim Jagielski
1727*b1cdbd2cSJim Jagielski m_aOutlineBtn ( this, CUI_RES( CB_OUTLINE ) ),
1728*b1cdbd2cSJim Jagielski m_aShadowBtn ( this, CUI_RES( CB_SHADOW ) ),
1729*b1cdbd2cSJim Jagielski m_aBlinkingBtn ( this, CUI_RES( CB_BLINKING ) ),
1730*b1cdbd2cSJim Jagielski m_aHiddenBtn ( this, CUI_RES( CB_CHARHIDDEN ) ),
1731*b1cdbd2cSJim Jagielski
1732*b1cdbd2cSJim Jagielski m_aVerticalLine ( this, CUI_RES( FL_EFFECTS_VERTICAL ) ),
1733*b1cdbd2cSJim Jagielski
1734*b1cdbd2cSJim Jagielski m_aOverlineFT ( this, CUI_RES( FT_OVERLINE ) ),
1735*b1cdbd2cSJim Jagielski m_aOverlineLB ( this, CUI_RES( LB_OVERLINE ) ),
1736*b1cdbd2cSJim Jagielski m_aOverlineColorFT ( this, CUI_RES( FT_OVERLINE_COLOR ) ),
1737*b1cdbd2cSJim Jagielski m_aOverlineColorLB ( this, CUI_RES( LB_OVERLINE_COLOR ) ),
1738*b1cdbd2cSJim Jagielski m_aStrikeoutFT ( this, CUI_RES( FT_STRIKEOUT ) ),
1739*b1cdbd2cSJim Jagielski m_aStrikeoutLB ( this, CUI_RES( LB_STRIKEOUT ) ),
1740*b1cdbd2cSJim Jagielski m_aUnderlineFT ( this, CUI_RES( FT_UNDERLINE ) ),
1741*b1cdbd2cSJim Jagielski m_aUnderlineLB ( this, CUI_RES( LB_UNDERLINE ) ),
1742*b1cdbd2cSJim Jagielski m_aUnderlineColorFT ( this, CUI_RES( FT_UNDERLINE_COLOR ) ),
1743*b1cdbd2cSJim Jagielski m_aUnderlineColorLB ( this, CUI_RES( LB_UNDERLINE_COLOR ) ),
1744*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn ( this, CUI_RES( CB_INDIVIDUALWORDS ) ),
1745*b1cdbd2cSJim Jagielski
1746*b1cdbd2cSJim Jagielski m_aAsianLine ( this, CUI_RES( FL_EFFECTS_ASIAN ) ),
1747*b1cdbd2cSJim Jagielski
1748*b1cdbd2cSJim Jagielski m_aEmphasisFT ( this, CUI_RES( FT_EMPHASIS ) ),
1749*b1cdbd2cSJim Jagielski m_aEmphasisLB ( this, CUI_RES( LB_EMPHASIS ) ),
1750*b1cdbd2cSJim Jagielski m_aPositionFT ( this, CUI_RES( FT_POSITION ) ),
1751*b1cdbd2cSJim Jagielski m_aPositionLB ( this, CUI_RES( LB_POSITION ) ),
1752*b1cdbd2cSJim Jagielski
1753*b1cdbd2cSJim Jagielski m_aTransparentColorName ( CUI_RES( STR_CHARNAME_TRANSPARENT ) )
1754*b1cdbd2cSJim Jagielski
1755*b1cdbd2cSJim Jagielski {
1756*b1cdbd2cSJim Jagielski m_aEffectsLB.Hide();
1757*b1cdbd2cSJim Jagielski FreeResource();
1758*b1cdbd2cSJim Jagielski Initialize();
1759*b1cdbd2cSJim Jagielski }
1760*b1cdbd2cSJim Jagielski
1761*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1762*b1cdbd2cSJim Jagielski
Initialize()1763*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::Initialize()
1764*b1cdbd2cSJim Jagielski {
1765*b1cdbd2cSJim Jagielski // to handle the changes of the other pages
1766*b1cdbd2cSJim Jagielski SetExchangeSupport();
1767*b1cdbd2cSJim Jagielski
1768*b1cdbd2cSJim Jagielski // HTML-Mode
1769*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem;
1770*b1cdbd2cSJim Jagielski SfxObjectShell* pShell;
1771*b1cdbd2cSJim Jagielski if ( SFX_ITEM_SET == GetItemSet().GetItemState( SID_HTML_MODE, sal_False, &pItem ) ||
1772*b1cdbd2cSJim Jagielski ( NULL != ( pShell = SfxObjectShell::Current() ) &&
1773*b1cdbd2cSJim Jagielski NULL != ( pItem = pShell->GetItem( SID_HTML_MODE ) ) ) )
1774*b1cdbd2cSJim Jagielski {
1775*b1cdbd2cSJim Jagielski m_nHtmlMode = ( (const SfxUInt16Item*)pItem )->GetValue();
1776*b1cdbd2cSJim Jagielski if ( ( m_nHtmlMode & HTMLMODE_ON ) == HTMLMODE_ON )
1777*b1cdbd2cSJim Jagielski {
1778*b1cdbd2cSJim Jagielski //!!! hide some controls please
1779*b1cdbd2cSJim Jagielski }
1780*b1cdbd2cSJim Jagielski }
1781*b1cdbd2cSJim Jagielski
1782*b1cdbd2cSJim Jagielski // fill the color box
1783*b1cdbd2cSJim Jagielski SfxObjectShell* pDocSh = SfxObjectShell::Current();
1784*b1cdbd2cSJim Jagielski DBG_ASSERT( pDocSh, "DocShell not found!" );
1785*b1cdbd2cSJim Jagielski XColorListSharedPtr aColorTable;
1786*b1cdbd2cSJim Jagielski
1787*b1cdbd2cSJim Jagielski if ( pDocSh )
1788*b1cdbd2cSJim Jagielski {
1789*b1cdbd2cSJim Jagielski pItem = pDocSh->GetItem( SID_COLOR_TABLE );
1790*b1cdbd2cSJim Jagielski if ( pItem != NULL )
1791*b1cdbd2cSJim Jagielski aColorTable = static_cast< const SvxColorTableItem* >(pItem)->GetColorTable();
1792*b1cdbd2cSJim Jagielski }
1793*b1cdbd2cSJim Jagielski
1794*b1cdbd2cSJim Jagielski if ( !aColorTable.get() )
1795*b1cdbd2cSJim Jagielski {
1796*b1cdbd2cSJim Jagielski aColorTable = XPropertyListFactory::CreateSharedXColorList(SvtPathOptions().GetPalettePath());
1797*b1cdbd2cSJim Jagielski }
1798*b1cdbd2cSJim Jagielski
1799*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SetUpdateMode( sal_False );
1800*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SetUpdateMode( sal_False );
1801*b1cdbd2cSJim Jagielski m_aFontColorLB.SetUpdateMode( sal_False );
1802*b1cdbd2cSJim Jagielski
1803*b1cdbd2cSJim Jagielski {
1804*b1cdbd2cSJim Jagielski SfxPoolItem* pDummy;
1805*b1cdbd2cSJim Jagielski SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocSh );
1806*b1cdbd2cSJim Jagielski if ( !pFrame ||
1807*b1cdbd2cSJim Jagielski SFX_ITEM_DEFAULT > pFrame->GetBindings().QueryState( SID_ATTR_AUTO_COLOR_INVALID, pDummy ) )
1808*b1cdbd2cSJim Jagielski {
1809*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.InsertAutomaticEntry();
1810*b1cdbd2cSJim Jagielski m_aOverlineColorLB.InsertAutomaticEntry();
1811*b1cdbd2cSJim Jagielski m_aFontColorLB.InsertAutomaticEntry();
1812*b1cdbd2cSJim Jagielski }
1813*b1cdbd2cSJim Jagielski }
1814*b1cdbd2cSJim Jagielski for ( long i = 0; i < aColorTable->Count(); i++ )
1815*b1cdbd2cSJim Jagielski {
1816*b1cdbd2cSJim Jagielski XColorEntry* pEntry = aColorTable->GetColor(i);
1817*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
1818*b1cdbd2cSJim Jagielski m_aOverlineColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
1819*b1cdbd2cSJim Jagielski m_aFontColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
1820*b1cdbd2cSJim Jagielski }
1821*b1cdbd2cSJim Jagielski
1822*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SetUpdateMode( sal_True );
1823*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SetUpdateMode( sal_True );
1824*b1cdbd2cSJim Jagielski m_aFontColorLB.SetUpdateMode( sal_True );
1825*b1cdbd2cSJim Jagielski m_aFontColorLB.SetSelectHdl( LINK( this, SvxCharEffectsPage, ColorBoxSelectHdl_Impl ) );
1826*b1cdbd2cSJim Jagielski
1827*b1cdbd2cSJim Jagielski // handler
1828*b1cdbd2cSJim Jagielski Link aLink = LINK( this, SvxCharEffectsPage, SelectHdl_Impl );
1829*b1cdbd2cSJim Jagielski m_aUnderlineLB.SetSelectHdl( aLink );
1830*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SetSelectHdl( aLink );
1831*b1cdbd2cSJim Jagielski m_aOverlineLB.SetSelectHdl( aLink );
1832*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SetSelectHdl( aLink );
1833*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SetSelectHdl( aLink );
1834*b1cdbd2cSJim Jagielski m_aEmphasisLB.SetSelectHdl( aLink );
1835*b1cdbd2cSJim Jagielski m_aPositionLB.SetSelectHdl( aLink );
1836*b1cdbd2cSJim Jagielski m_aEffects2LB.SetSelectHdl( aLink );
1837*b1cdbd2cSJim Jagielski m_aReliefLB.SetSelectHdl( aLink );
1838*b1cdbd2cSJim Jagielski
1839*b1cdbd2cSJim Jagielski m_aUnderlineLB.SelectEntryPos( 0 );
1840*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SelectEntryPos( 0 );
1841*b1cdbd2cSJim Jagielski m_aOverlineLB.SelectEntryPos( 0 );
1842*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SelectEntryPos( 0 );
1843*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SelectEntryPos( 0 );
1844*b1cdbd2cSJim Jagielski m_aEmphasisLB.SelectEntryPos( 0 );
1845*b1cdbd2cSJim Jagielski m_aPositionLB.SelectEntryPos( 0 );
1846*b1cdbd2cSJim Jagielski SelectHdl_Impl( NULL );
1847*b1cdbd2cSJim Jagielski SelectHdl_Impl( &m_aEmphasisLB );
1848*b1cdbd2cSJim Jagielski
1849*b1cdbd2cSJim Jagielski m_aEffects2LB.SelectEntryPos( 0 );
1850*b1cdbd2cSJim Jagielski
1851*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.SetClickHdl( LINK( this, SvxCharEffectsPage, CbClickHdl_Impl ) );
1852*b1cdbd2cSJim Jagielski aLink = LINK( this, SvxCharEffectsPage, TristClickHdl_Impl );
1853*b1cdbd2cSJim Jagielski m_aOutlineBtn.SetClickHdl( aLink );
1854*b1cdbd2cSJim Jagielski m_aShadowBtn.SetClickHdl( aLink );
1855*b1cdbd2cSJim Jagielski
1856*b1cdbd2cSJim Jagielski if ( !SvtLanguageOptions().IsAsianTypographyEnabled() )
1857*b1cdbd2cSJim Jagielski {
1858*b1cdbd2cSJim Jagielski m_aAsianLine.Hide();
1859*b1cdbd2cSJim Jagielski m_aEmphasisFT.Hide();
1860*b1cdbd2cSJim Jagielski m_aEmphasisLB.Hide();
1861*b1cdbd2cSJim Jagielski m_aPositionFT.Hide();
1862*b1cdbd2cSJim Jagielski m_aPositionLB.Hide();
1863*b1cdbd2cSJim Jagielski }
1864*b1cdbd2cSJim Jagielski }
1865*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1866*b1cdbd2cSJim Jagielski
UpdatePreview_Impl()1867*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::UpdatePreview_Impl()
1868*b1cdbd2cSJim Jagielski {
1869*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
1870*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
1871*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
1872*b1cdbd2cSJim Jagielski
1873*b1cdbd2cSJim Jagielski sal_uInt16 nPos = m_aUnderlineLB.GetSelectEntryPos();
1874*b1cdbd2cSJim Jagielski FontUnderline eUnderline = (FontUnderline)(sal_uLong)m_aUnderlineLB.GetEntryData( nPos );
1875*b1cdbd2cSJim Jagielski nPos = m_aOverlineLB.GetSelectEntryPos();
1876*b1cdbd2cSJim Jagielski FontUnderline eOverline = (FontUnderline)(sal_uLong)m_aOverlineLB.GetEntryData( nPos );
1877*b1cdbd2cSJim Jagielski nPos = m_aStrikeoutLB.GetSelectEntryPos();
1878*b1cdbd2cSJim Jagielski FontStrikeout eStrikeout = (FontStrikeout)(sal_uLong)m_aStrikeoutLB.GetEntryData( nPos );
1879*b1cdbd2cSJim Jagielski rFont.SetUnderline( eUnderline );
1880*b1cdbd2cSJim Jagielski rCJKFont.SetUnderline( eUnderline );
1881*b1cdbd2cSJim Jagielski rCTLFont.SetUnderline( eUnderline );
1882*b1cdbd2cSJim Jagielski m_aPreviewWin.SetTextLineColor( m_aUnderlineColorLB.GetSelectEntryColor() );
1883*b1cdbd2cSJim Jagielski rFont.SetOverline( eOverline );
1884*b1cdbd2cSJim Jagielski rCJKFont.SetOverline( eOverline );
1885*b1cdbd2cSJim Jagielski rCTLFont.SetOverline( eOverline );
1886*b1cdbd2cSJim Jagielski m_aPreviewWin.SetOverlineColor( m_aOverlineColorLB.GetSelectEntryColor() );
1887*b1cdbd2cSJim Jagielski rFont.SetStrikeout( eStrikeout );
1888*b1cdbd2cSJim Jagielski rCJKFont.SetStrikeout( eStrikeout );
1889*b1cdbd2cSJim Jagielski rCTLFont.SetStrikeout( eStrikeout );
1890*b1cdbd2cSJim Jagielski
1891*b1cdbd2cSJim Jagielski nPos = m_aPositionLB.GetSelectEntryPos();
1892*b1cdbd2cSJim Jagielski sal_Bool bUnder = ( CHRDLG_POSITION_UNDER == (sal_uLong)m_aPositionLB.GetEntryData( nPos ) );
1893*b1cdbd2cSJim Jagielski FontEmphasisMark eMark = (FontEmphasisMark)m_aEmphasisLB.GetSelectEntryPos();
1894*b1cdbd2cSJim Jagielski eMark |= bUnder ? EMPHASISMARK_POS_BELOW : EMPHASISMARK_POS_ABOVE;
1895*b1cdbd2cSJim Jagielski rFont.SetEmphasisMark( eMark );
1896*b1cdbd2cSJim Jagielski rCJKFont.SetEmphasisMark( eMark );
1897*b1cdbd2cSJim Jagielski rCTLFont.SetEmphasisMark( eMark );
1898*b1cdbd2cSJim Jagielski
1899*b1cdbd2cSJim Jagielski sal_uInt16 nRelief = m_aReliefLB.GetSelectEntryPos();
1900*b1cdbd2cSJim Jagielski if(LISTBOX_ENTRY_NOTFOUND != nRelief)
1901*b1cdbd2cSJim Jagielski {
1902*b1cdbd2cSJim Jagielski rFont.SetRelief( (FontRelief)nRelief );
1903*b1cdbd2cSJim Jagielski rCJKFont.SetRelief( (FontRelief)nRelief );
1904*b1cdbd2cSJim Jagielski rCTLFont.SetRelief( (FontRelief)nRelief );
1905*b1cdbd2cSJim Jagielski }
1906*b1cdbd2cSJim Jagielski
1907*b1cdbd2cSJim Jagielski rFont.SetOutline( StateToAttr( m_aOutlineBtn.GetState() ) );
1908*b1cdbd2cSJim Jagielski rCJKFont.SetOutline( rFont.IsOutline() );
1909*b1cdbd2cSJim Jagielski rCTLFont.SetOutline( rFont.IsOutline() );
1910*b1cdbd2cSJim Jagielski
1911*b1cdbd2cSJim Jagielski rFont.SetShadow( StateToAttr( m_aShadowBtn.GetState() ) );
1912*b1cdbd2cSJim Jagielski rCJKFont.SetShadow( rFont.IsShadow() );
1913*b1cdbd2cSJim Jagielski rCTLFont.SetShadow( rFont.IsShadow() );
1914*b1cdbd2cSJim Jagielski
1915*b1cdbd2cSJim Jagielski sal_uInt16 nCapsPos = m_aEffects2LB.GetSelectEntryPos();
1916*b1cdbd2cSJim Jagielski if ( nCapsPos != LISTBOX_ENTRY_NOTFOUND )
1917*b1cdbd2cSJim Jagielski {
1918*b1cdbd2cSJim Jagielski rFont.SetCaseMap( (SvxCaseMap)nCapsPos );
1919*b1cdbd2cSJim Jagielski rCJKFont.SetCaseMap( (SvxCaseMap)nCapsPos );
1920*b1cdbd2cSJim Jagielski // #i78474# small caps do not exist in CTL fonts
1921*b1cdbd2cSJim Jagielski rCTLFont.SetCaseMap( static_cast<SvxCaseMap>( nCapsPos == SVX_CASEMAP_KAPITAELCHEN ? SVX_CASEMAP_NOT_MAPPED : (SvxCaseMap)nCapsPos) );
1922*b1cdbd2cSJim Jagielski }
1923*b1cdbd2cSJim Jagielski
1924*b1cdbd2cSJim Jagielski sal_Bool bWordLine = m_aIndividualWordsBtn.IsChecked();
1925*b1cdbd2cSJim Jagielski rFont.SetWordLineMode( bWordLine );
1926*b1cdbd2cSJim Jagielski rCJKFont.SetWordLineMode( bWordLine );
1927*b1cdbd2cSJim Jagielski rCTLFont.SetWordLineMode( bWordLine );
1928*b1cdbd2cSJim Jagielski
1929*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
1930*b1cdbd2cSJim Jagielski }
1931*b1cdbd2cSJim Jagielski
1932*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1933*b1cdbd2cSJim Jagielski
SetCaseMap_Impl(SvxCaseMap eCaseMap)1934*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::SetCaseMap_Impl( SvxCaseMap eCaseMap )
1935*b1cdbd2cSJim Jagielski {
1936*b1cdbd2cSJim Jagielski if ( SVX_CASEMAP_END > eCaseMap )
1937*b1cdbd2cSJim Jagielski m_aEffects2LB.SelectEntryPos(
1938*b1cdbd2cSJim Jagielski sal::static_int_cast< sal_uInt16 >( eCaseMap ) );
1939*b1cdbd2cSJim Jagielski else
1940*b1cdbd2cSJim Jagielski {
1941*b1cdbd2cSJim Jagielski m_aEffects2LB.SetNoSelection();
1942*b1cdbd2cSJim Jagielski eCaseMap = SVX_CASEMAP_NOT_MAPPED;
1943*b1cdbd2cSJim Jagielski }
1944*b1cdbd2cSJim Jagielski
1945*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
1946*b1cdbd2cSJim Jagielski }
1947*b1cdbd2cSJim Jagielski
1948*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1949*b1cdbd2cSJim Jagielski
ResetColor_Impl(const SfxItemSet & rSet)1950*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::ResetColor_Impl( const SfxItemSet& rSet )
1951*b1cdbd2cSJim Jagielski {
1952*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
1953*b1cdbd2cSJim Jagielski SfxItemState eState = rSet.GetItemState( nWhich );
1954*b1cdbd2cSJim Jagielski
1955*b1cdbd2cSJim Jagielski switch ( eState )
1956*b1cdbd2cSJim Jagielski {
1957*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
1958*b1cdbd2cSJim Jagielski m_aFontColorFT.Hide();
1959*b1cdbd2cSJim Jagielski m_aFontColorLB.Hide();
1960*b1cdbd2cSJim Jagielski break;
1961*b1cdbd2cSJim Jagielski
1962*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
1963*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
1964*b1cdbd2cSJim Jagielski m_aFontColorFT.Disable();
1965*b1cdbd2cSJim Jagielski m_aFontColorLB.Disable();
1966*b1cdbd2cSJim Jagielski break;
1967*b1cdbd2cSJim Jagielski
1968*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
1969*b1cdbd2cSJim Jagielski m_aFontColorLB.SetNoSelection();
1970*b1cdbd2cSJim Jagielski break;
1971*b1cdbd2cSJim Jagielski
1972*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
1973*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
1974*b1cdbd2cSJim Jagielski {
1975*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
1976*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
1977*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
1978*b1cdbd2cSJim Jagielski
1979*b1cdbd2cSJim Jagielski const SvxColorItem& rItem = (SvxColorItem&)rSet.Get( nWhich );
1980*b1cdbd2cSJim Jagielski Color aColor = rItem.GetValue();
1981*b1cdbd2cSJim Jagielski rFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );
1982*b1cdbd2cSJim Jagielski rCJKFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );
1983*b1cdbd2cSJim Jagielski rCTLFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );
1984*b1cdbd2cSJim Jagielski
1985*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
1986*b1cdbd2cSJim Jagielski sal_uInt16 nSelPos = m_aFontColorLB.GetEntryPos( aColor );
1987*b1cdbd2cSJim Jagielski if ( nSelPos == LISTBOX_ENTRY_NOTFOUND && aColor == Color( COL_TRANSPARENT ) )
1988*b1cdbd2cSJim Jagielski nSelPos = m_aFontColorLB.GetEntryPos( m_aTransparentColorName );
1989*b1cdbd2cSJim Jagielski
1990*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
1991*b1cdbd2cSJim Jagielski m_aFontColorLB.SelectEntryPos( nSelPos );
1992*b1cdbd2cSJim Jagielski else
1993*b1cdbd2cSJim Jagielski {
1994*b1cdbd2cSJim Jagielski nSelPos = m_aFontColorLB.GetEntryPos( aColor );
1995*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
1996*b1cdbd2cSJim Jagielski m_aFontColorLB.SelectEntryPos( nSelPos );
1997*b1cdbd2cSJim Jagielski else
1998*b1cdbd2cSJim Jagielski m_aFontColorLB.SelectEntryPos(
1999*b1cdbd2cSJim Jagielski m_aFontColorLB.InsertEntry( aColor, String( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
2000*b1cdbd2cSJim Jagielski }
2001*b1cdbd2cSJim Jagielski break;
2002*b1cdbd2cSJim Jagielski }
2003*b1cdbd2cSJim Jagielski }
2004*b1cdbd2cSJim Jagielski }
2005*b1cdbd2cSJim Jagielski
2006*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2007*b1cdbd2cSJim Jagielski
FillItemSetColor_Impl(SfxItemSet & rSet)2008*b1cdbd2cSJim Jagielski sal_Bool SvxCharEffectsPage::FillItemSetColor_Impl( SfxItemSet& rSet )
2009*b1cdbd2cSJim Jagielski {
2010*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
2011*b1cdbd2cSJim Jagielski const SvxColorItem* pOld = (const SvxColorItem*)GetOldItem( rSet, SID_ATTR_CHAR_COLOR );
2012*b1cdbd2cSJim Jagielski const SvxColorItem* pItem = NULL;
2013*b1cdbd2cSJim Jagielski sal_Bool bChanged = sal_True;
2014*b1cdbd2cSJim Jagielski const SfxItemSet* pExampleSet = GetTabDialog() ? GetTabDialog()->GetExampleSet() : NULL;
2015*b1cdbd2cSJim Jagielski const SfxItemSet& rOldSet = GetItemSet();
2016*b1cdbd2cSJim Jagielski
2017*b1cdbd2cSJim Jagielski Color aSelectedColor;
2018*b1cdbd2cSJim Jagielski if ( m_aFontColorLB.GetSelectEntry() == m_aTransparentColorName )
2019*b1cdbd2cSJim Jagielski aSelectedColor = Color( COL_TRANSPARENT );
2020*b1cdbd2cSJim Jagielski else
2021*b1cdbd2cSJim Jagielski aSelectedColor = m_aFontColorLB.GetSelectEntryColor();
2022*b1cdbd2cSJim Jagielski
2023*b1cdbd2cSJim Jagielski if ( pOld && pOld->GetValue() == aSelectedColor )
2024*b1cdbd2cSJim Jagielski bChanged = sal_False;
2025*b1cdbd2cSJim Jagielski
2026*b1cdbd2cSJim Jagielski if ( !bChanged )
2027*b1cdbd2cSJim Jagielski bChanged = ( m_aFontColorLB.GetSavedValue() == LISTBOX_ENTRY_NOTFOUND );
2028*b1cdbd2cSJim Jagielski
2029*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet &&
2030*b1cdbd2cSJim Jagielski pExampleSet->GetItemState( nWhich, sal_False, (const SfxPoolItem**)&pItem ) == SFX_ITEM_SET &&
2031*b1cdbd2cSJim Jagielski ( (SvxColorItem*)pItem )->GetValue() != aSelectedColor )
2032*b1cdbd2cSJim Jagielski bChanged = sal_True;
2033*b1cdbd2cSJim Jagielski
2034*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False;
2035*b1cdbd2cSJim Jagielski
2036*b1cdbd2cSJim Jagielski if ( bChanged && m_aFontColorLB.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
2037*b1cdbd2cSJim Jagielski {
2038*b1cdbd2cSJim Jagielski rSet.Put( SvxColorItem( aSelectedColor, nWhich ) );
2039*b1cdbd2cSJim Jagielski bModified = sal_True;
2040*b1cdbd2cSJim Jagielski }
2041*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2042*b1cdbd2cSJim Jagielski CLEARTITEM;
2043*b1cdbd2cSJim Jagielski
2044*b1cdbd2cSJim Jagielski return bModified;
2045*b1cdbd2cSJim Jagielski }
2046*b1cdbd2cSJim Jagielski
2047*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2048*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharEffectsPage,SelectHdl_Impl,ListBox *,pBox)2049*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharEffectsPage, SelectHdl_Impl, ListBox*, pBox )
2050*b1cdbd2cSJim Jagielski {
2051*b1cdbd2cSJim Jagielski if ( &m_aEmphasisLB == pBox )
2052*b1cdbd2cSJim Jagielski {
2053*b1cdbd2cSJim Jagielski sal_uInt16 nEPos = m_aEmphasisLB.GetSelectEntryPos();
2054*b1cdbd2cSJim Jagielski sal_Bool bEnable = ( nEPos > 0 && nEPos != LISTBOX_ENTRY_NOTFOUND );
2055*b1cdbd2cSJim Jagielski m_aPositionFT.Enable( bEnable );
2056*b1cdbd2cSJim Jagielski m_aPositionLB.Enable( bEnable );
2057*b1cdbd2cSJim Jagielski }
2058*b1cdbd2cSJim Jagielski else if( &m_aReliefLB == pBox)
2059*b1cdbd2cSJim Jagielski {
2060*b1cdbd2cSJim Jagielski sal_Bool bEnable = ( pBox->GetSelectEntryPos() == 0 );
2061*b1cdbd2cSJim Jagielski m_aOutlineBtn.Enable( bEnable );
2062*b1cdbd2cSJim Jagielski m_aShadowBtn.Enable( bEnable );
2063*b1cdbd2cSJim Jagielski }
2064*b1cdbd2cSJim Jagielski else if ( &m_aPositionLB != pBox )
2065*b1cdbd2cSJim Jagielski {
2066*b1cdbd2cSJim Jagielski sal_uInt16 nUPos = m_aUnderlineLB.GetSelectEntryPos(),
2067*b1cdbd2cSJim Jagielski nOPos = m_aOverlineLB.GetSelectEntryPos(),
2068*b1cdbd2cSJim Jagielski nSPos = m_aStrikeoutLB.GetSelectEntryPos();
2069*b1cdbd2cSJim Jagielski sal_Bool bUEnable = ( nUPos > 0 && nUPos != LISTBOX_ENTRY_NOTFOUND );
2070*b1cdbd2cSJim Jagielski sal_Bool bOEnable = ( nOPos > 0 && nOPos != LISTBOX_ENTRY_NOTFOUND );
2071*b1cdbd2cSJim Jagielski m_aUnderlineColorFT.Enable( bUEnable );
2072*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.Enable( bUEnable );
2073*b1cdbd2cSJim Jagielski m_aOverlineColorFT.Enable( bOEnable );
2074*b1cdbd2cSJim Jagielski m_aOverlineColorLB.Enable( bOEnable );
2075*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Enable( bUEnable || bOEnable || ( nSPos > 0 && nSPos != LISTBOX_ENTRY_NOTFOUND ) );
2076*b1cdbd2cSJim Jagielski }
2077*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
2078*b1cdbd2cSJim Jagielski return 0;
2079*b1cdbd2cSJim Jagielski }
2080*b1cdbd2cSJim Jagielski
2081*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2082*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharEffectsPage,UpdatePreview_Impl,ListBox *,EMPTYARG)2083*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharEffectsPage, UpdatePreview_Impl, ListBox*, EMPTYARG )
2084*b1cdbd2cSJim Jagielski {
2085*b1cdbd2cSJim Jagielski bool bEnable = ( ( m_aUnderlineLB.GetSelectEntryPos() > 0 ) ||
2086*b1cdbd2cSJim Jagielski ( m_aOverlineLB.GetSelectEntryPos() > 0 ) ||
2087*b1cdbd2cSJim Jagielski ( m_aStrikeoutLB.GetSelectEntryPos() > 0 ) );
2088*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Enable( bEnable );
2089*b1cdbd2cSJim Jagielski
2090*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
2091*b1cdbd2cSJim Jagielski return 0;
2092*b1cdbd2cSJim Jagielski }
2093*b1cdbd2cSJim Jagielski
2094*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2095*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharEffectsPage,CbClickHdl_Impl,CheckBox *,EMPTYARG)2096*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharEffectsPage, CbClickHdl_Impl, CheckBox*, EMPTYARG )
2097*b1cdbd2cSJim Jagielski {
2098*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
2099*b1cdbd2cSJim Jagielski return 0;
2100*b1cdbd2cSJim Jagielski }
2101*b1cdbd2cSJim Jagielski
2102*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2103*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharEffectsPage,TristClickHdl_Impl,TriStateBox *,EMPTYARG)2104*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharEffectsPage, TristClickHdl_Impl, TriStateBox*, EMPTYARG )
2105*b1cdbd2cSJim Jagielski {
2106*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
2107*b1cdbd2cSJim Jagielski return 0;
2108*b1cdbd2cSJim Jagielski }
2109*b1cdbd2cSJim Jagielski
2110*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2111*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharEffectsPage,ColorBoxSelectHdl_Impl,ColorListBox *,pBox)2112*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharEffectsPage, ColorBoxSelectHdl_Impl, ColorListBox*, pBox )
2113*b1cdbd2cSJim Jagielski {
2114*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
2115*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
2116*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
2117*b1cdbd2cSJim Jagielski
2118*b1cdbd2cSJim Jagielski Color aSelectedColor;
2119*b1cdbd2cSJim Jagielski if ( pBox->GetSelectEntry() == m_aTransparentColorName )
2120*b1cdbd2cSJim Jagielski aSelectedColor = Color( COL_TRANSPARENT );
2121*b1cdbd2cSJim Jagielski else
2122*b1cdbd2cSJim Jagielski aSelectedColor = pBox->GetSelectEntryColor();
2123*b1cdbd2cSJim Jagielski rFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
2124*b1cdbd2cSJim Jagielski rCJKFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
2125*b1cdbd2cSJim Jagielski rCTLFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
2126*b1cdbd2cSJim Jagielski
2127*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
2128*b1cdbd2cSJim Jagielski return 0;
2129*b1cdbd2cSJim Jagielski }
2130*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2131*b1cdbd2cSJim Jagielski
DeactivatePage(SfxItemSet * _pSet)2132*b1cdbd2cSJim Jagielski int SvxCharEffectsPage::DeactivatePage( SfxItemSet* _pSet )
2133*b1cdbd2cSJim Jagielski {
2134*b1cdbd2cSJim Jagielski if ( _pSet )
2135*b1cdbd2cSJim Jagielski FillItemSet( *_pSet );
2136*b1cdbd2cSJim Jagielski return LEAVE_PAGE;
2137*b1cdbd2cSJim Jagielski }
2138*b1cdbd2cSJim Jagielski
2139*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2140*b1cdbd2cSJim Jagielski
Create(Window * pParent,const SfxItemSet & rSet)2141*b1cdbd2cSJim Jagielski SfxTabPage* SvxCharEffectsPage::Create( Window* pParent, const SfxItemSet& rSet )
2142*b1cdbd2cSJim Jagielski {
2143*b1cdbd2cSJim Jagielski return new SvxCharEffectsPage( pParent, rSet );
2144*b1cdbd2cSJim Jagielski }
2145*b1cdbd2cSJim Jagielski
2146*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2147*b1cdbd2cSJim Jagielski
GetRanges()2148*b1cdbd2cSJim Jagielski sal_uInt16* SvxCharEffectsPage::GetRanges()
2149*b1cdbd2cSJim Jagielski {
2150*b1cdbd2cSJim Jagielski return pEffectsRanges;
2151*b1cdbd2cSJim Jagielski }
2152*b1cdbd2cSJim Jagielski
2153*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2154*b1cdbd2cSJim Jagielski
Reset(const SfxItemSet & rSet)2155*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::Reset( const SfxItemSet& rSet )
2156*b1cdbd2cSJim Jagielski {
2157*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
2158*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
2159*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
2160*b1cdbd2cSJim Jagielski
2161*b1cdbd2cSJim Jagielski sal_Bool bEnable = sal_False;
2162*b1cdbd2cSJim Jagielski
2163*b1cdbd2cSJim Jagielski // Underline
2164*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE );
2165*b1cdbd2cSJim Jagielski rFont.SetUnderline( UNDERLINE_NONE );
2166*b1cdbd2cSJim Jagielski rCJKFont.SetUnderline( UNDERLINE_NONE );
2167*b1cdbd2cSJim Jagielski rCTLFont.SetUnderline( UNDERLINE_NONE );
2168*b1cdbd2cSJim Jagielski
2169*b1cdbd2cSJim Jagielski m_aUnderlineLB.SelectEntryPos( 0 );
2170*b1cdbd2cSJim Jagielski SfxItemState eState = rSet.GetItemState( nWhich );
2171*b1cdbd2cSJim Jagielski
2172*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DONTCARE )
2173*b1cdbd2cSJim Jagielski {
2174*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_DONTCARE )
2175*b1cdbd2cSJim Jagielski m_aUnderlineLB.SetNoSelection();
2176*b1cdbd2cSJim Jagielski else
2177*b1cdbd2cSJim Jagielski {
2178*b1cdbd2cSJim Jagielski const SvxUnderlineItem& rItem = (SvxUnderlineItem&)rSet.Get( nWhich );
2179*b1cdbd2cSJim Jagielski FontUnderline eUnderline = (FontUnderline)rItem.GetValue();
2180*b1cdbd2cSJim Jagielski rFont.SetUnderline( eUnderline );
2181*b1cdbd2cSJim Jagielski rCJKFont.SetUnderline( eUnderline );
2182*b1cdbd2cSJim Jagielski rCTLFont.SetUnderline( eUnderline );
2183*b1cdbd2cSJim Jagielski
2184*b1cdbd2cSJim Jagielski if ( eUnderline != UNDERLINE_NONE )
2185*b1cdbd2cSJim Jagielski {
2186*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0; i < m_aUnderlineLB.GetEntryCount(); ++i )
2187*b1cdbd2cSJim Jagielski {
2188*b1cdbd2cSJim Jagielski if ( (FontUnderline)(sal_uLong)m_aUnderlineLB.GetEntryData(i) == eUnderline )
2189*b1cdbd2cSJim Jagielski {
2190*b1cdbd2cSJim Jagielski m_aUnderlineLB.SelectEntryPos(i);
2191*b1cdbd2cSJim Jagielski bEnable |= sal_True;
2192*b1cdbd2cSJim Jagielski break;
2193*b1cdbd2cSJim Jagielski }
2194*b1cdbd2cSJim Jagielski }
2195*b1cdbd2cSJim Jagielski
2196*b1cdbd2cSJim Jagielski Color aColor = rItem.GetColor();
2197*b1cdbd2cSJim Jagielski sal_uInt16 nPos = m_aUnderlineColorLB.GetEntryPos( aColor );
2198*b1cdbd2cSJim Jagielski
2199*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nPos )
2200*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SelectEntryPos( nPos );
2201*b1cdbd2cSJim Jagielski else
2202*b1cdbd2cSJim Jagielski {
2203*b1cdbd2cSJim Jagielski nPos = m_aUnderlineColorLB.GetEntryPos( aColor );
2204*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nPos )
2205*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SelectEntryPos( nPos );
2206*b1cdbd2cSJim Jagielski else
2207*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SelectEntryPos(
2208*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.InsertEntry( aColor,
2209*b1cdbd2cSJim Jagielski String( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
2210*b1cdbd2cSJim Jagielski }
2211*b1cdbd2cSJim Jagielski }
2212*b1cdbd2cSJim Jagielski else
2213*b1cdbd2cSJim Jagielski {
2214*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SelectEntry( Color( COL_AUTO ));
2215*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.Disable();
2216*b1cdbd2cSJim Jagielski }
2217*b1cdbd2cSJim Jagielski }
2218*b1cdbd2cSJim Jagielski }
2219*b1cdbd2cSJim Jagielski
2220*b1cdbd2cSJim Jagielski // Overline
2221*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_OVERLINE );
2222*b1cdbd2cSJim Jagielski rFont.SetOverline( UNDERLINE_NONE );
2223*b1cdbd2cSJim Jagielski rCJKFont.SetOverline( UNDERLINE_NONE );
2224*b1cdbd2cSJim Jagielski rCTLFont.SetOverline( UNDERLINE_NONE );
2225*b1cdbd2cSJim Jagielski
2226*b1cdbd2cSJim Jagielski m_aOverlineLB.SelectEntryPos( 0 );
2227*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2228*b1cdbd2cSJim Jagielski
2229*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DONTCARE )
2230*b1cdbd2cSJim Jagielski {
2231*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_DONTCARE )
2232*b1cdbd2cSJim Jagielski m_aOverlineLB.SetNoSelection();
2233*b1cdbd2cSJim Jagielski else
2234*b1cdbd2cSJim Jagielski {
2235*b1cdbd2cSJim Jagielski const SvxOverlineItem& rItem = (SvxOverlineItem&)rSet.Get( nWhich );
2236*b1cdbd2cSJim Jagielski FontUnderline eOverline = (FontUnderline)rItem.GetValue();
2237*b1cdbd2cSJim Jagielski rFont.SetOverline( eOverline );
2238*b1cdbd2cSJim Jagielski rCJKFont.SetOverline( eOverline );
2239*b1cdbd2cSJim Jagielski rCTLFont.SetOverline( eOverline );
2240*b1cdbd2cSJim Jagielski
2241*b1cdbd2cSJim Jagielski if ( eOverline != UNDERLINE_NONE )
2242*b1cdbd2cSJim Jagielski {
2243*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0; i < m_aOverlineLB.GetEntryCount(); ++i )
2244*b1cdbd2cSJim Jagielski {
2245*b1cdbd2cSJim Jagielski if ( (FontUnderline)(sal_uLong)m_aOverlineLB.GetEntryData(i) == eOverline )
2246*b1cdbd2cSJim Jagielski {
2247*b1cdbd2cSJim Jagielski m_aOverlineLB.SelectEntryPos(i);
2248*b1cdbd2cSJim Jagielski bEnable |= sal_True;
2249*b1cdbd2cSJim Jagielski break;
2250*b1cdbd2cSJim Jagielski }
2251*b1cdbd2cSJim Jagielski }
2252*b1cdbd2cSJim Jagielski
2253*b1cdbd2cSJim Jagielski Color aColor = rItem.GetColor();
2254*b1cdbd2cSJim Jagielski sal_uInt16 nPos = m_aOverlineColorLB.GetEntryPos( aColor );
2255*b1cdbd2cSJim Jagielski
2256*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nPos )
2257*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SelectEntryPos( nPos );
2258*b1cdbd2cSJim Jagielski else
2259*b1cdbd2cSJim Jagielski {
2260*b1cdbd2cSJim Jagielski nPos = m_aOverlineColorLB.GetEntryPos( aColor );
2261*b1cdbd2cSJim Jagielski if ( LISTBOX_ENTRY_NOTFOUND != nPos )
2262*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SelectEntryPos( nPos );
2263*b1cdbd2cSJim Jagielski else
2264*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SelectEntryPos(
2265*b1cdbd2cSJim Jagielski m_aOverlineColorLB.InsertEntry( aColor,
2266*b1cdbd2cSJim Jagielski String( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
2267*b1cdbd2cSJim Jagielski }
2268*b1cdbd2cSJim Jagielski }
2269*b1cdbd2cSJim Jagielski else
2270*b1cdbd2cSJim Jagielski {
2271*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SelectEntry( Color( COL_AUTO ));
2272*b1cdbd2cSJim Jagielski m_aOverlineColorLB.Disable();
2273*b1cdbd2cSJim Jagielski }
2274*b1cdbd2cSJim Jagielski }
2275*b1cdbd2cSJim Jagielski }
2276*b1cdbd2cSJim Jagielski
2277*b1cdbd2cSJim Jagielski // Strikeout
2278*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT );
2279*b1cdbd2cSJim Jagielski rFont.SetStrikeout( STRIKEOUT_NONE );
2280*b1cdbd2cSJim Jagielski rCJKFont.SetStrikeout( STRIKEOUT_NONE );
2281*b1cdbd2cSJim Jagielski rCTLFont.SetStrikeout( STRIKEOUT_NONE );
2282*b1cdbd2cSJim Jagielski
2283*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SelectEntryPos( 0 );
2284*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2285*b1cdbd2cSJim Jagielski
2286*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DONTCARE )
2287*b1cdbd2cSJim Jagielski {
2288*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_DONTCARE )
2289*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SetNoSelection();
2290*b1cdbd2cSJim Jagielski else
2291*b1cdbd2cSJim Jagielski {
2292*b1cdbd2cSJim Jagielski const SvxCrossedOutItem& rItem = (SvxCrossedOutItem&)rSet.Get( nWhich );
2293*b1cdbd2cSJim Jagielski FontStrikeout eStrikeout = (FontStrikeout)rItem.GetValue();
2294*b1cdbd2cSJim Jagielski rFont.SetStrikeout( eStrikeout );
2295*b1cdbd2cSJim Jagielski rCJKFont.SetStrikeout( eStrikeout );
2296*b1cdbd2cSJim Jagielski rCTLFont.SetStrikeout( eStrikeout );
2297*b1cdbd2cSJim Jagielski
2298*b1cdbd2cSJim Jagielski if ( eStrikeout != STRIKEOUT_NONE )
2299*b1cdbd2cSJim Jagielski {
2300*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0; i < m_aStrikeoutLB.GetEntryCount(); ++i )
2301*b1cdbd2cSJim Jagielski {
2302*b1cdbd2cSJim Jagielski if ( (FontStrikeout)(sal_uLong)m_aStrikeoutLB.GetEntryData(i) == eStrikeout )
2303*b1cdbd2cSJim Jagielski {
2304*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SelectEntryPos(i);
2305*b1cdbd2cSJim Jagielski bEnable |= sal_True;
2306*b1cdbd2cSJim Jagielski break;
2307*b1cdbd2cSJim Jagielski }
2308*b1cdbd2cSJim Jagielski }
2309*b1cdbd2cSJim Jagielski }
2310*b1cdbd2cSJim Jagielski }
2311*b1cdbd2cSJim Jagielski }
2312*b1cdbd2cSJim Jagielski
2313*b1cdbd2cSJim Jagielski // WordLineMode
2314*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE );
2315*b1cdbd2cSJim Jagielski switch ( eState )
2316*b1cdbd2cSJim Jagielski {
2317*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2318*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Hide();
2319*b1cdbd2cSJim Jagielski break;
2320*b1cdbd2cSJim Jagielski
2321*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2322*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2323*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Disable();
2324*b1cdbd2cSJim Jagielski break;
2325*b1cdbd2cSJim Jagielski
2326*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2327*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.SetState( STATE_DONTKNOW );
2328*b1cdbd2cSJim Jagielski break;
2329*b1cdbd2cSJim Jagielski
2330*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2331*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2332*b1cdbd2cSJim Jagielski {
2333*b1cdbd2cSJim Jagielski const SvxWordLineModeItem& rItem = (SvxWordLineModeItem&)rSet.Get( nWhich );
2334*b1cdbd2cSJim Jagielski rFont.SetWordLineMode( rItem.GetValue() );
2335*b1cdbd2cSJim Jagielski rCJKFont.SetWordLineMode( rItem.GetValue() );
2336*b1cdbd2cSJim Jagielski rCTLFont.SetWordLineMode( rItem.GetValue() );
2337*b1cdbd2cSJim Jagielski
2338*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Check( rItem.GetValue() );
2339*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Enable( bEnable );
2340*b1cdbd2cSJim Jagielski break;
2341*b1cdbd2cSJim Jagielski }
2342*b1cdbd2cSJim Jagielski }
2343*b1cdbd2cSJim Jagielski
2344*b1cdbd2cSJim Jagielski // Emphasis
2345*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_EMPHASISMARK );
2346*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2347*b1cdbd2cSJim Jagielski
2348*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DEFAULT )
2349*b1cdbd2cSJim Jagielski {
2350*b1cdbd2cSJim Jagielski const SvxEmphasisMarkItem& rItem = (SvxEmphasisMarkItem&)rSet.Get( nWhich );
2351*b1cdbd2cSJim Jagielski FontEmphasisMark eMark = rItem.GetEmphasisMark();
2352*b1cdbd2cSJim Jagielski rFont.SetEmphasisMark( eMark );
2353*b1cdbd2cSJim Jagielski rCJKFont.SetEmphasisMark( eMark );
2354*b1cdbd2cSJim Jagielski rCTLFont.SetEmphasisMark( eMark );
2355*b1cdbd2cSJim Jagielski
2356*b1cdbd2cSJim Jagielski m_aEmphasisLB.SelectEntryPos( (sal_uInt16)( eMark & EMPHASISMARK_STYLE ) );
2357*b1cdbd2cSJim Jagielski eMark &= ~EMPHASISMARK_STYLE;
2358*b1cdbd2cSJim Jagielski sal_uLong nEntryData = ( eMark == EMPHASISMARK_POS_ABOVE )
2359*b1cdbd2cSJim Jagielski ? CHRDLG_POSITION_OVER
2360*b1cdbd2cSJim Jagielski : ( eMark == EMPHASISMARK_POS_BELOW ) ? CHRDLG_POSITION_UNDER : 0;
2361*b1cdbd2cSJim Jagielski
2362*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0; i < m_aPositionLB.GetEntryCount(); i++ )
2363*b1cdbd2cSJim Jagielski {
2364*b1cdbd2cSJim Jagielski if ( nEntryData == (sal_uLong)m_aPositionLB.GetEntryData(i) )
2365*b1cdbd2cSJim Jagielski {
2366*b1cdbd2cSJim Jagielski m_aPositionLB.SelectEntryPos(i);
2367*b1cdbd2cSJim Jagielski break;
2368*b1cdbd2cSJim Jagielski }
2369*b1cdbd2cSJim Jagielski }
2370*b1cdbd2cSJim Jagielski }
2371*b1cdbd2cSJim Jagielski else if ( eState == SFX_ITEM_DONTCARE )
2372*b1cdbd2cSJim Jagielski m_aEmphasisLB.SetNoSelection( );
2373*b1cdbd2cSJim Jagielski else if ( eState == SFX_ITEM_UNKNOWN )
2374*b1cdbd2cSJim Jagielski {
2375*b1cdbd2cSJim Jagielski m_aEmphasisFT.Hide();
2376*b1cdbd2cSJim Jagielski m_aEmphasisLB.Hide();
2377*b1cdbd2cSJim Jagielski }
2378*b1cdbd2cSJim Jagielski else // SFX_ITEM_DISABLED or SFX_ITEM_READONLY
2379*b1cdbd2cSJim Jagielski {
2380*b1cdbd2cSJim Jagielski m_aEmphasisFT.Disable();
2381*b1cdbd2cSJim Jagielski m_aEmphasisLB.Disable();
2382*b1cdbd2cSJim Jagielski }
2383*b1cdbd2cSJim Jagielski
2384*b1cdbd2cSJim Jagielski // the select handler for the underline/overline/strikeout list boxes
2385*b1cdbd2cSJim Jagielski // SelectHdl_Impl( NULL );
2386*b1cdbd2cSJim Jagielski DBG_ASSERT(m_aUnderlineLB.GetSelectHdl() == m_aOverlineLB.GetSelectHdl(),
2387*b1cdbd2cSJim Jagielski "SvxCharEffectsPage::Reset: inconsistence (1)!");
2388*b1cdbd2cSJim Jagielski DBG_ASSERT(m_aUnderlineLB.GetSelectHdl() == m_aStrikeoutLB.GetSelectHdl(),
2389*b1cdbd2cSJim Jagielski "SvxCharEffectsPage::Reset: inconsistence (1)!");
2390*b1cdbd2cSJim Jagielski m_aUnderlineLB.GetSelectHdl().Call(NULL);
2391*b1cdbd2cSJim Jagielski // don't call SelectHdl_Impl directly!
2392*b1cdbd2cSJim Jagielski // in DisableControls, we may have re-reouted the select handler
2393*b1cdbd2cSJim Jagielski // 30.05.2001 - 86262 - frank.schoenheit@germany.sun.com
2394*b1cdbd2cSJim Jagielski
2395*b1cdbd2cSJim Jagielski // the select handler for the emphasis listbox
2396*b1cdbd2cSJim Jagielski // SelectHdl_Impl( &m_aEmphasisLB );
2397*b1cdbd2cSJim Jagielski DBG_ASSERT(m_aEmphasisLB.GetSelectHdl() == LINK(this, SvxCharEffectsPage, SelectHdl_Impl),
2398*b1cdbd2cSJim Jagielski "SvxCharEffectsPage::Reset: inconsistence (2)!");
2399*b1cdbd2cSJim Jagielski m_aEmphasisLB.GetSelectHdl().Call( &m_aEmphasisLB );
2400*b1cdbd2cSJim Jagielski // this is for consistency only. Here it would be allowed to call SelectHdl_Impl directly ...
2401*b1cdbd2cSJim Jagielski
2402*b1cdbd2cSJim Jagielski // Effects
2403*b1cdbd2cSJim Jagielski SvxCaseMap eCaseMap = SVX_CASEMAP_END;
2404*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP );
2405*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2406*b1cdbd2cSJim Jagielski switch ( eState )
2407*b1cdbd2cSJim Jagielski {
2408*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2409*b1cdbd2cSJim Jagielski m_aEffectsFT.Hide();
2410*b1cdbd2cSJim Jagielski m_aEffects2LB.Hide();
2411*b1cdbd2cSJim Jagielski break;
2412*b1cdbd2cSJim Jagielski
2413*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2414*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2415*b1cdbd2cSJim Jagielski m_aEffectsFT.Disable();
2416*b1cdbd2cSJim Jagielski m_aEffects2LB.Disable();
2417*b1cdbd2cSJim Jagielski break;
2418*b1cdbd2cSJim Jagielski
2419*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2420*b1cdbd2cSJim Jagielski m_aEffects2LB.SetNoSelection();
2421*b1cdbd2cSJim Jagielski break;
2422*b1cdbd2cSJim Jagielski
2423*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2424*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2425*b1cdbd2cSJim Jagielski {
2426*b1cdbd2cSJim Jagielski const SvxCaseMapItem& rItem = (const SvxCaseMapItem&)rSet.Get( nWhich );
2427*b1cdbd2cSJim Jagielski eCaseMap = (SvxCaseMap)rItem.GetValue();
2428*b1cdbd2cSJim Jagielski break;
2429*b1cdbd2cSJim Jagielski }
2430*b1cdbd2cSJim Jagielski }
2431*b1cdbd2cSJim Jagielski SetCaseMap_Impl( eCaseMap );
2432*b1cdbd2cSJim Jagielski
2433*b1cdbd2cSJim Jagielski //Relief
2434*b1cdbd2cSJim Jagielski nWhich = GetWhich(SID_ATTR_CHAR_RELIEF);
2435*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2436*b1cdbd2cSJim Jagielski switch ( eState )
2437*b1cdbd2cSJim Jagielski {
2438*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2439*b1cdbd2cSJim Jagielski m_aReliefFT.Hide();
2440*b1cdbd2cSJim Jagielski m_aReliefLB.Hide();
2441*b1cdbd2cSJim Jagielski break;
2442*b1cdbd2cSJim Jagielski
2443*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2444*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2445*b1cdbd2cSJim Jagielski m_aReliefFT.Disable();
2446*b1cdbd2cSJim Jagielski m_aReliefLB.Disable();
2447*b1cdbd2cSJim Jagielski break;
2448*b1cdbd2cSJim Jagielski
2449*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2450*b1cdbd2cSJim Jagielski m_aReliefLB.SetNoSelection();
2451*b1cdbd2cSJim Jagielski break;
2452*b1cdbd2cSJim Jagielski
2453*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2454*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2455*b1cdbd2cSJim Jagielski {
2456*b1cdbd2cSJim Jagielski const SvxCharReliefItem& rItem = (const SvxCharReliefItem&)rSet.Get( nWhich );
2457*b1cdbd2cSJim Jagielski m_aReliefLB.SelectEntryPos(rItem.GetValue());
2458*b1cdbd2cSJim Jagielski SelectHdl_Impl(&m_aReliefLB);
2459*b1cdbd2cSJim Jagielski break;
2460*b1cdbd2cSJim Jagielski }
2461*b1cdbd2cSJim Jagielski }
2462*b1cdbd2cSJim Jagielski
2463*b1cdbd2cSJim Jagielski // Outline
2464*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CONTOUR );
2465*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2466*b1cdbd2cSJim Jagielski switch ( eState )
2467*b1cdbd2cSJim Jagielski {
2468*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2469*b1cdbd2cSJim Jagielski m_aOutlineBtn.Hide();
2470*b1cdbd2cSJim Jagielski break;
2471*b1cdbd2cSJim Jagielski
2472*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2473*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2474*b1cdbd2cSJim Jagielski m_aOutlineBtn.Disable();
2475*b1cdbd2cSJim Jagielski break;
2476*b1cdbd2cSJim Jagielski
2477*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2478*b1cdbd2cSJim Jagielski m_aOutlineBtn.SetState( STATE_DONTKNOW );
2479*b1cdbd2cSJim Jagielski break;
2480*b1cdbd2cSJim Jagielski
2481*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2482*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2483*b1cdbd2cSJim Jagielski {
2484*b1cdbd2cSJim Jagielski const SvxContourItem& rItem = (SvxContourItem&)rSet.Get( nWhich );
2485*b1cdbd2cSJim Jagielski m_aOutlineBtn.SetState( (TriState)rItem.GetValue() );
2486*b1cdbd2cSJim Jagielski m_aOutlineBtn.EnableTriState( sal_False );
2487*b1cdbd2cSJim Jagielski break;
2488*b1cdbd2cSJim Jagielski }
2489*b1cdbd2cSJim Jagielski }
2490*b1cdbd2cSJim Jagielski
2491*b1cdbd2cSJim Jagielski // Shadow
2492*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_SHADOWED );
2493*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2494*b1cdbd2cSJim Jagielski
2495*b1cdbd2cSJim Jagielski switch ( eState )
2496*b1cdbd2cSJim Jagielski {
2497*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2498*b1cdbd2cSJim Jagielski m_aShadowBtn.Hide();
2499*b1cdbd2cSJim Jagielski break;
2500*b1cdbd2cSJim Jagielski
2501*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2502*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2503*b1cdbd2cSJim Jagielski m_aShadowBtn.Disable();
2504*b1cdbd2cSJim Jagielski break;
2505*b1cdbd2cSJim Jagielski
2506*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2507*b1cdbd2cSJim Jagielski m_aShadowBtn.SetState( STATE_DONTKNOW );
2508*b1cdbd2cSJim Jagielski break;
2509*b1cdbd2cSJim Jagielski
2510*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2511*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2512*b1cdbd2cSJim Jagielski {
2513*b1cdbd2cSJim Jagielski const SvxShadowedItem& rItem = (SvxShadowedItem&)rSet.Get( nWhich );
2514*b1cdbd2cSJim Jagielski m_aShadowBtn.SetState( (TriState)rItem.GetValue() );
2515*b1cdbd2cSJim Jagielski m_aShadowBtn.EnableTriState( sal_False );
2516*b1cdbd2cSJim Jagielski break;
2517*b1cdbd2cSJim Jagielski }
2518*b1cdbd2cSJim Jagielski }
2519*b1cdbd2cSJim Jagielski
2520*b1cdbd2cSJim Jagielski // Blinking
2521*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_FLASH );
2522*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2523*b1cdbd2cSJim Jagielski
2524*b1cdbd2cSJim Jagielski switch ( eState )
2525*b1cdbd2cSJim Jagielski {
2526*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2527*b1cdbd2cSJim Jagielski m_aBlinkingBtn.Hide();
2528*b1cdbd2cSJim Jagielski break;
2529*b1cdbd2cSJim Jagielski
2530*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2531*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2532*b1cdbd2cSJim Jagielski m_aBlinkingBtn.Disable();
2533*b1cdbd2cSJim Jagielski break;
2534*b1cdbd2cSJim Jagielski
2535*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2536*b1cdbd2cSJim Jagielski m_aBlinkingBtn.SetState( STATE_DONTKNOW );
2537*b1cdbd2cSJim Jagielski break;
2538*b1cdbd2cSJim Jagielski
2539*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2540*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2541*b1cdbd2cSJim Jagielski {
2542*b1cdbd2cSJim Jagielski const SvxBlinkItem& rItem = (SvxBlinkItem&)rSet.Get( nWhich );
2543*b1cdbd2cSJim Jagielski m_aBlinkingBtn.SetState( (TriState)rItem.GetValue() );
2544*b1cdbd2cSJim Jagielski m_aBlinkingBtn.EnableTriState( sal_False );
2545*b1cdbd2cSJim Jagielski break;
2546*b1cdbd2cSJim Jagielski }
2547*b1cdbd2cSJim Jagielski }
2548*b1cdbd2cSJim Jagielski // Hidden
2549*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_HIDDEN );
2550*b1cdbd2cSJim Jagielski eState = rSet.GetItemState( nWhich );
2551*b1cdbd2cSJim Jagielski
2552*b1cdbd2cSJim Jagielski switch ( eState )
2553*b1cdbd2cSJim Jagielski {
2554*b1cdbd2cSJim Jagielski case SFX_ITEM_UNKNOWN:
2555*b1cdbd2cSJim Jagielski m_aHiddenBtn.Hide();
2556*b1cdbd2cSJim Jagielski break;
2557*b1cdbd2cSJim Jagielski
2558*b1cdbd2cSJim Jagielski case SFX_ITEM_DISABLED:
2559*b1cdbd2cSJim Jagielski case SFX_ITEM_READONLY:
2560*b1cdbd2cSJim Jagielski m_aHiddenBtn.Disable();
2561*b1cdbd2cSJim Jagielski break;
2562*b1cdbd2cSJim Jagielski
2563*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2564*b1cdbd2cSJim Jagielski m_aHiddenBtn.SetState( STATE_DONTKNOW );
2565*b1cdbd2cSJim Jagielski break;
2566*b1cdbd2cSJim Jagielski
2567*b1cdbd2cSJim Jagielski case SFX_ITEM_DEFAULT:
2568*b1cdbd2cSJim Jagielski case SFX_ITEM_SET:
2569*b1cdbd2cSJim Jagielski {
2570*b1cdbd2cSJim Jagielski const SvxCharHiddenItem& rItem = (SvxCharHiddenItem&)rSet.Get( nWhich );
2571*b1cdbd2cSJim Jagielski m_aHiddenBtn.SetState( (TriState)rItem.GetValue() );
2572*b1cdbd2cSJim Jagielski m_aHiddenBtn.EnableTriState( sal_False );
2573*b1cdbd2cSJim Jagielski break;
2574*b1cdbd2cSJim Jagielski }
2575*b1cdbd2cSJim Jagielski }
2576*b1cdbd2cSJim Jagielski
2577*b1cdbd2cSJim Jagielski SetPrevFontWidthScale( rSet );
2578*b1cdbd2cSJim Jagielski ResetColor_Impl( rSet );
2579*b1cdbd2cSJim Jagielski
2580*b1cdbd2cSJim Jagielski // preview update
2581*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
2582*b1cdbd2cSJim Jagielski
2583*b1cdbd2cSJim Jagielski // save this settings
2584*b1cdbd2cSJim Jagielski m_aUnderlineLB.SaveValue();
2585*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.SaveValue();
2586*b1cdbd2cSJim Jagielski m_aOverlineLB.SaveValue();
2587*b1cdbd2cSJim Jagielski m_aOverlineColorLB.SaveValue();
2588*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SaveValue();
2589*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.SaveValue();
2590*b1cdbd2cSJim Jagielski m_aEmphasisLB.SaveValue();
2591*b1cdbd2cSJim Jagielski m_aPositionLB.SaveValue();
2592*b1cdbd2cSJim Jagielski m_aEffects2LB.SaveValue();
2593*b1cdbd2cSJim Jagielski m_aReliefLB.SaveValue();
2594*b1cdbd2cSJim Jagielski m_aOutlineBtn.SaveValue();
2595*b1cdbd2cSJim Jagielski m_aShadowBtn.SaveValue();
2596*b1cdbd2cSJim Jagielski m_aBlinkingBtn.SaveValue();
2597*b1cdbd2cSJim Jagielski m_aHiddenBtn.SaveValue();
2598*b1cdbd2cSJim Jagielski m_aFontColorLB.SaveValue();
2599*b1cdbd2cSJim Jagielski }
2600*b1cdbd2cSJim Jagielski
2601*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2602*b1cdbd2cSJim Jagielski
FillItemSet(SfxItemSet & rSet)2603*b1cdbd2cSJim Jagielski sal_Bool SvxCharEffectsPage::FillItemSet( SfxItemSet& rSet )
2604*b1cdbd2cSJim Jagielski {
2605*b1cdbd2cSJim Jagielski const SfxPoolItem* pOld = 0;
2606*b1cdbd2cSJim Jagielski const SfxItemSet& rOldSet = GetItemSet();
2607*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False;
2608*b1cdbd2cSJim Jagielski FASTBOOL bChanged = sal_True;
2609*b1cdbd2cSJim Jagielski
2610*b1cdbd2cSJim Jagielski // Underline
2611*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE );
2612*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_UNDERLINE );
2613*b1cdbd2cSJim Jagielski sal_uInt16 nPos = m_aUnderlineLB.GetSelectEntryPos();
2614*b1cdbd2cSJim Jagielski FontUnderline eUnder = (FontUnderline)(sal_uLong)m_aUnderlineLB.GetEntryData( nPos );
2615*b1cdbd2cSJim Jagielski
2616*b1cdbd2cSJim Jagielski if ( pOld )
2617*b1cdbd2cSJim Jagielski {
2618*b1cdbd2cSJim Jagielski //! if there are different underline styles in the selection the
2619*b1cdbd2cSJim Jagielski //! item-state in the 'rOldSet' will be invalid. In this case
2620*b1cdbd2cSJim Jagielski //! changing the underline style will be allowed if a style is
2621*b1cdbd2cSJim Jagielski //! selected in the listbox.
2622*b1cdbd2cSJim Jagielski sal_Bool bAllowChg = LISTBOX_ENTRY_NOTFOUND != nPos &&
2623*b1cdbd2cSJim Jagielski SFX_ITEM_DEFAULT > rOldSet.GetItemState( nWhich, sal_True );
2624*b1cdbd2cSJim Jagielski
2625*b1cdbd2cSJim Jagielski const SvxUnderlineItem& rItem = *( (const SvxUnderlineItem*)pOld );
2626*b1cdbd2cSJim Jagielski if ( (FontUnderline)rItem.GetValue() == eUnder &&
2627*b1cdbd2cSJim Jagielski ( UNDERLINE_NONE == eUnder || rItem.GetColor() == m_aUnderlineColorLB.GetSelectEntryColor() ) &&
2628*b1cdbd2cSJim Jagielski ! bAllowChg )
2629*b1cdbd2cSJim Jagielski bChanged = sal_False;
2630*b1cdbd2cSJim Jagielski }
2631*b1cdbd2cSJim Jagielski
2632*b1cdbd2cSJim Jagielski if ( bChanged )
2633*b1cdbd2cSJim Jagielski {
2634*b1cdbd2cSJim Jagielski SvxUnderlineItem aNewItem( eUnder, nWhich );
2635*b1cdbd2cSJim Jagielski aNewItem.SetColor( m_aUnderlineColorLB.GetSelectEntryColor() );
2636*b1cdbd2cSJim Jagielski rSet.Put( aNewItem );
2637*b1cdbd2cSJim Jagielski bModified |= sal_True;
2638*b1cdbd2cSJim Jagielski }
2639*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2640*b1cdbd2cSJim Jagielski CLEARTITEM;
2641*b1cdbd2cSJim Jagielski
2642*b1cdbd2cSJim Jagielski bChanged = sal_True;
2643*b1cdbd2cSJim Jagielski
2644*b1cdbd2cSJim Jagielski // Overline
2645*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_OVERLINE );
2646*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_OVERLINE );
2647*b1cdbd2cSJim Jagielski nPos = m_aOverlineLB.GetSelectEntryPos();
2648*b1cdbd2cSJim Jagielski FontUnderline eOver = (FontUnderline)(sal_uLong)m_aOverlineLB.GetEntryData( nPos );
2649*b1cdbd2cSJim Jagielski
2650*b1cdbd2cSJim Jagielski if ( pOld )
2651*b1cdbd2cSJim Jagielski {
2652*b1cdbd2cSJim Jagielski //! if there are different underline styles in the selection the
2653*b1cdbd2cSJim Jagielski //! item-state in the 'rOldSet' will be invalid. In this case
2654*b1cdbd2cSJim Jagielski //! changing the underline style will be allowed if a style is
2655*b1cdbd2cSJim Jagielski //! selected in the listbox.
2656*b1cdbd2cSJim Jagielski sal_Bool bAllowChg = LISTBOX_ENTRY_NOTFOUND != nPos &&
2657*b1cdbd2cSJim Jagielski SFX_ITEM_DEFAULT > rOldSet.GetItemState( nWhich, sal_True );
2658*b1cdbd2cSJim Jagielski
2659*b1cdbd2cSJim Jagielski const SvxOverlineItem& rItem = *( (const SvxOverlineItem*)pOld );
2660*b1cdbd2cSJim Jagielski if ( (FontUnderline)rItem.GetValue() == eOver &&
2661*b1cdbd2cSJim Jagielski ( UNDERLINE_NONE == eOver || rItem.GetColor() == m_aOverlineColorLB.GetSelectEntryColor() ) &&
2662*b1cdbd2cSJim Jagielski ! bAllowChg )
2663*b1cdbd2cSJim Jagielski bChanged = sal_False;
2664*b1cdbd2cSJim Jagielski }
2665*b1cdbd2cSJim Jagielski
2666*b1cdbd2cSJim Jagielski if ( bChanged )
2667*b1cdbd2cSJim Jagielski {
2668*b1cdbd2cSJim Jagielski SvxOverlineItem aNewItem( eOver, nWhich );
2669*b1cdbd2cSJim Jagielski aNewItem.SetColor( m_aOverlineColorLB.GetSelectEntryColor() );
2670*b1cdbd2cSJim Jagielski rSet.Put( aNewItem );
2671*b1cdbd2cSJim Jagielski bModified |= sal_True;
2672*b1cdbd2cSJim Jagielski }
2673*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2674*b1cdbd2cSJim Jagielski CLEARTITEM;
2675*b1cdbd2cSJim Jagielski
2676*b1cdbd2cSJim Jagielski bChanged = sal_True;
2677*b1cdbd2cSJim Jagielski
2678*b1cdbd2cSJim Jagielski // Strikeout
2679*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT );
2680*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_STRIKEOUT );
2681*b1cdbd2cSJim Jagielski nPos = m_aStrikeoutLB.GetSelectEntryPos();
2682*b1cdbd2cSJim Jagielski FontStrikeout eStrike = (FontStrikeout)(sal_uLong)m_aStrikeoutLB.GetEntryData( nPos );
2683*b1cdbd2cSJim Jagielski
2684*b1cdbd2cSJim Jagielski if ( pOld )
2685*b1cdbd2cSJim Jagielski {
2686*b1cdbd2cSJim Jagielski //! if there are different strikeout styles in the selection the
2687*b1cdbd2cSJim Jagielski //! item-state in the 'rOldSet' will be invalid. In this case
2688*b1cdbd2cSJim Jagielski //! changing the strikeout style will be allowed if a style is
2689*b1cdbd2cSJim Jagielski //! selected in the listbox.
2690*b1cdbd2cSJim Jagielski sal_Bool bAllowChg = LISTBOX_ENTRY_NOTFOUND != nPos &&
2691*b1cdbd2cSJim Jagielski SFX_ITEM_DEFAULT > rOldSet.GetItemState( nWhich, sal_True );
2692*b1cdbd2cSJim Jagielski
2693*b1cdbd2cSJim Jagielski const SvxCrossedOutItem& rItem = *( (const SvxCrossedOutItem*)pOld );
2694*b1cdbd2cSJim Jagielski if ( !m_aStrikeoutLB.IsEnabled()
2695*b1cdbd2cSJim Jagielski || ((FontStrikeout)rItem.GetValue() == eStrike && !bAllowChg) )
2696*b1cdbd2cSJim Jagielski bChanged = sal_False;
2697*b1cdbd2cSJim Jagielski }
2698*b1cdbd2cSJim Jagielski
2699*b1cdbd2cSJim Jagielski if ( bChanged )
2700*b1cdbd2cSJim Jagielski {
2701*b1cdbd2cSJim Jagielski rSet.Put( SvxCrossedOutItem( eStrike, nWhich ) );
2702*b1cdbd2cSJim Jagielski bModified |= sal_True;
2703*b1cdbd2cSJim Jagielski }
2704*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2705*b1cdbd2cSJim Jagielski CLEARTITEM;
2706*b1cdbd2cSJim Jagielski
2707*b1cdbd2cSJim Jagielski bChanged = sal_True;
2708*b1cdbd2cSJim Jagielski
2709*b1cdbd2cSJim Jagielski // Individual words
2710*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE );
2711*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_WORDLINEMODE );
2712*b1cdbd2cSJim Jagielski
2713*b1cdbd2cSJim Jagielski if ( pOld )
2714*b1cdbd2cSJim Jagielski {
2715*b1cdbd2cSJim Jagielski const SvxWordLineModeItem& rItem = *( (const SvxWordLineModeItem*)pOld );
2716*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == m_aIndividualWordsBtn.IsChecked() )
2717*b1cdbd2cSJim Jagielski bChanged = sal_False;
2718*b1cdbd2cSJim Jagielski }
2719*b1cdbd2cSJim Jagielski
2720*b1cdbd2cSJim Jagielski if ( rOldSet.GetItemState( nWhich ) == SFX_ITEM_DONTCARE &&
2721*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.IsChecked() == m_aIndividualWordsBtn.GetSavedValue() )
2722*b1cdbd2cSJim Jagielski bChanged = sal_False;
2723*b1cdbd2cSJim Jagielski
2724*b1cdbd2cSJim Jagielski if ( bChanged )
2725*b1cdbd2cSJim Jagielski {
2726*b1cdbd2cSJim Jagielski rSet.Put( SvxWordLineModeItem( m_aIndividualWordsBtn.IsChecked(), nWhich ) );
2727*b1cdbd2cSJim Jagielski bModified |= sal_True;
2728*b1cdbd2cSJim Jagielski }
2729*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2730*b1cdbd2cSJim Jagielski CLEARTITEM;
2731*b1cdbd2cSJim Jagielski
2732*b1cdbd2cSJim Jagielski bChanged = sal_True;
2733*b1cdbd2cSJim Jagielski
2734*b1cdbd2cSJim Jagielski // Emphasis
2735*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_EMPHASISMARK );
2736*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_EMPHASISMARK );
2737*b1cdbd2cSJim Jagielski sal_uInt16 nMarkPos = m_aEmphasisLB.GetSelectEntryPos();
2738*b1cdbd2cSJim Jagielski sal_uInt16 nPosPos = m_aPositionLB.GetSelectEntryPos();
2739*b1cdbd2cSJim Jagielski FontEmphasisMark eMark = (FontEmphasisMark)nMarkPos;
2740*b1cdbd2cSJim Jagielski if ( m_aPositionLB.IsEnabled() )
2741*b1cdbd2cSJim Jagielski {
2742*b1cdbd2cSJim Jagielski eMark |= ( CHRDLG_POSITION_UNDER == (sal_uLong)m_aPositionLB.GetEntryData( nPosPos ) )
2743*b1cdbd2cSJim Jagielski ? EMPHASISMARK_POS_BELOW : EMPHASISMARK_POS_ABOVE;
2744*b1cdbd2cSJim Jagielski }
2745*b1cdbd2cSJim Jagielski
2746*b1cdbd2cSJim Jagielski if ( pOld )
2747*b1cdbd2cSJim Jagielski {
2748*b1cdbd2cSJim Jagielski if( rOldSet.GetItemState( nWhich ) != SFX_ITEM_DONTCARE )
2749*b1cdbd2cSJim Jagielski {
2750*b1cdbd2cSJim Jagielski const SvxEmphasisMarkItem& rItem = *( (const SvxEmphasisMarkItem*)pOld );
2751*b1cdbd2cSJim Jagielski if ( rItem.GetEmphasisMark() == eMark )
2752*b1cdbd2cSJim Jagielski bChanged = sal_False;
2753*b1cdbd2cSJim Jagielski }
2754*b1cdbd2cSJim Jagielski }
2755*b1cdbd2cSJim Jagielski
2756*b1cdbd2cSJim Jagielski if ( rOldSet.GetItemState( nWhich ) == SFX_ITEM_DONTCARE &&
2757*b1cdbd2cSJim Jagielski m_aEmphasisLB.GetSavedValue() == nMarkPos && m_aPositionLB.GetSavedValue() == nPosPos )
2758*b1cdbd2cSJim Jagielski bChanged = sal_False;
2759*b1cdbd2cSJim Jagielski
2760*b1cdbd2cSJim Jagielski if ( bChanged )
2761*b1cdbd2cSJim Jagielski {
2762*b1cdbd2cSJim Jagielski rSet.Put( SvxEmphasisMarkItem( eMark, nWhich ) );
2763*b1cdbd2cSJim Jagielski bModified |= sal_True;
2764*b1cdbd2cSJim Jagielski }
2765*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2766*b1cdbd2cSJim Jagielski CLEARTITEM;
2767*b1cdbd2cSJim Jagielski
2768*b1cdbd2cSJim Jagielski bChanged = sal_True;
2769*b1cdbd2cSJim Jagielski
2770*b1cdbd2cSJim Jagielski // Effects
2771*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP );
2772*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_CASEMAP );
2773*b1cdbd2cSJim Jagielski SvxCaseMap eCaseMap = SVX_CASEMAP_NOT_MAPPED;
2774*b1cdbd2cSJim Jagielski FASTBOOL bChecked = sal_False;
2775*b1cdbd2cSJim Jagielski sal_uInt16 nCapsPos = m_aEffects2LB.GetSelectEntryPos();
2776*b1cdbd2cSJim Jagielski if ( nCapsPos != LISTBOX_ENTRY_NOTFOUND )
2777*b1cdbd2cSJim Jagielski {
2778*b1cdbd2cSJim Jagielski eCaseMap = (SvxCaseMap)nCapsPos;
2779*b1cdbd2cSJim Jagielski bChecked = sal_True;
2780*b1cdbd2cSJim Jagielski }
2781*b1cdbd2cSJim Jagielski
2782*b1cdbd2cSJim Jagielski if ( pOld )
2783*b1cdbd2cSJim Jagielski {
2784*b1cdbd2cSJim Jagielski //! if there are different effect styles in the selection the
2785*b1cdbd2cSJim Jagielski //! item-state in the 'rOldSet' will be invalid. In this case
2786*b1cdbd2cSJim Jagielski //! changing the effect style will be allowed if a style is
2787*b1cdbd2cSJim Jagielski //! selected in the listbox.
2788*b1cdbd2cSJim Jagielski sal_Bool bAllowChg = LISTBOX_ENTRY_NOTFOUND != nPos &&
2789*b1cdbd2cSJim Jagielski SFX_ITEM_DEFAULT > rOldSet.GetItemState( nWhich, sal_True );
2790*b1cdbd2cSJim Jagielski
2791*b1cdbd2cSJim Jagielski const SvxCaseMapItem& rItem = *( (const SvxCaseMapItem*)pOld );
2792*b1cdbd2cSJim Jagielski if ( (SvxCaseMap)rItem.GetValue() == eCaseMap && !bAllowChg )
2793*b1cdbd2cSJim Jagielski bChanged = sal_False;
2794*b1cdbd2cSJim Jagielski }
2795*b1cdbd2cSJim Jagielski
2796*b1cdbd2cSJim Jagielski if ( bChanged && bChecked )
2797*b1cdbd2cSJim Jagielski {
2798*b1cdbd2cSJim Jagielski rSet.Put( SvxCaseMapItem( eCaseMap, nWhich ) );
2799*b1cdbd2cSJim Jagielski bModified |= sal_True;
2800*b1cdbd2cSJim Jagielski }
2801*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2802*b1cdbd2cSJim Jagielski CLEARTITEM;
2803*b1cdbd2cSJim Jagielski
2804*b1cdbd2cSJim Jagielski bChanged = sal_True;
2805*b1cdbd2cSJim Jagielski
2806*b1cdbd2cSJim Jagielski //Relief
2807*b1cdbd2cSJim Jagielski nWhich = GetWhich(SID_ATTR_CHAR_RELIEF);
2808*b1cdbd2cSJim Jagielski if(m_aReliefLB.GetSelectEntryPos() != m_aReliefLB.GetSavedValue())
2809*b1cdbd2cSJim Jagielski {
2810*b1cdbd2cSJim Jagielski m_aReliefLB.SaveValue();
2811*b1cdbd2cSJim Jagielski SvxCharReliefItem aRelief((FontRelief)m_aReliefLB.GetSelectEntryPos(), nWhich);
2812*b1cdbd2cSJim Jagielski rSet.Put(aRelief);
2813*b1cdbd2cSJim Jagielski }
2814*b1cdbd2cSJim Jagielski
2815*b1cdbd2cSJim Jagielski // Outline
2816*b1cdbd2cSJim Jagielski const SfxItemSet* pExampleSet = GetTabDialog() ? GetTabDialog()->GetExampleSet() : NULL;
2817*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_CONTOUR );
2818*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_CONTOUR );
2819*b1cdbd2cSJim Jagielski TriState eState = m_aOutlineBtn.GetState();
2820*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem;
2821*b1cdbd2cSJim Jagielski
2822*b1cdbd2cSJim Jagielski if ( pOld )
2823*b1cdbd2cSJim Jagielski {
2824*b1cdbd2cSJim Jagielski const SvxContourItem& rItem = *( (const SvxContourItem*)pOld );
2825*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == StateToAttr( eState ) && m_aOutlineBtn.GetSavedValue() == eState )
2826*b1cdbd2cSJim Jagielski bChanged = sal_False;
2827*b1cdbd2cSJim Jagielski }
2828*b1cdbd2cSJim Jagielski
2829*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet && pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
2830*b1cdbd2cSJim Jagielski !StateToAttr( eState ) && ( (SvxContourItem*)pItem )->GetValue() )
2831*b1cdbd2cSJim Jagielski bChanged = sal_True;
2832*b1cdbd2cSJim Jagielski
2833*b1cdbd2cSJim Jagielski if ( bChanged && eState != STATE_DONTKNOW )
2834*b1cdbd2cSJim Jagielski {
2835*b1cdbd2cSJim Jagielski rSet.Put( SvxContourItem( StateToAttr( eState ), nWhich ) );
2836*b1cdbd2cSJim Jagielski bModified |= sal_True;
2837*b1cdbd2cSJim Jagielski }
2838*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2839*b1cdbd2cSJim Jagielski CLEARTITEM;
2840*b1cdbd2cSJim Jagielski
2841*b1cdbd2cSJim Jagielski bChanged = sal_True;
2842*b1cdbd2cSJim Jagielski
2843*b1cdbd2cSJim Jagielski // Shadow
2844*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_SHADOWED );
2845*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_SHADOWED );
2846*b1cdbd2cSJim Jagielski eState = m_aShadowBtn.GetState();
2847*b1cdbd2cSJim Jagielski
2848*b1cdbd2cSJim Jagielski if ( pOld )
2849*b1cdbd2cSJim Jagielski {
2850*b1cdbd2cSJim Jagielski const SvxShadowedItem& rItem = *( (const SvxShadowedItem*)pOld );
2851*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == StateToAttr( eState ) && m_aShadowBtn.GetSavedValue() == eState )
2852*b1cdbd2cSJim Jagielski bChanged = sal_False;
2853*b1cdbd2cSJim Jagielski }
2854*b1cdbd2cSJim Jagielski
2855*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet && pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
2856*b1cdbd2cSJim Jagielski !StateToAttr( eState ) && ( (SvxShadowedItem*)pItem )->GetValue() )
2857*b1cdbd2cSJim Jagielski bChanged = sal_True;
2858*b1cdbd2cSJim Jagielski
2859*b1cdbd2cSJim Jagielski if ( bChanged && eState != STATE_DONTKNOW )
2860*b1cdbd2cSJim Jagielski {
2861*b1cdbd2cSJim Jagielski rSet.Put( SvxShadowedItem( StateToAttr( eState ), nWhich ) );
2862*b1cdbd2cSJim Jagielski bModified = sal_True;
2863*b1cdbd2cSJim Jagielski }
2864*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2865*b1cdbd2cSJim Jagielski CLEARTITEM;
2866*b1cdbd2cSJim Jagielski
2867*b1cdbd2cSJim Jagielski bChanged = sal_True;
2868*b1cdbd2cSJim Jagielski
2869*b1cdbd2cSJim Jagielski // Blinking
2870*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_FLASH );
2871*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_FLASH );
2872*b1cdbd2cSJim Jagielski eState = m_aBlinkingBtn.GetState();
2873*b1cdbd2cSJim Jagielski
2874*b1cdbd2cSJim Jagielski if ( pOld )
2875*b1cdbd2cSJim Jagielski {
2876*b1cdbd2cSJim Jagielski const SvxBlinkItem& rItem = *( (const SvxBlinkItem*)pOld );
2877*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == StateToAttr( eState ) && m_aBlinkingBtn.GetSavedValue() == eState )
2878*b1cdbd2cSJim Jagielski bChanged = sal_False;
2879*b1cdbd2cSJim Jagielski }
2880*b1cdbd2cSJim Jagielski
2881*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet && pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
2882*b1cdbd2cSJim Jagielski !StateToAttr( eState ) && ( (SvxBlinkItem*)pItem )->GetValue() )
2883*b1cdbd2cSJim Jagielski bChanged = sal_True;
2884*b1cdbd2cSJim Jagielski
2885*b1cdbd2cSJim Jagielski if ( bChanged && eState != STATE_DONTKNOW )
2886*b1cdbd2cSJim Jagielski {
2887*b1cdbd2cSJim Jagielski rSet.Put( SvxBlinkItem( StateToAttr( eState ), nWhich ) );
2888*b1cdbd2cSJim Jagielski bModified = sal_True;
2889*b1cdbd2cSJim Jagielski }
2890*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2891*b1cdbd2cSJim Jagielski CLEARTITEM;
2892*b1cdbd2cSJim Jagielski
2893*b1cdbd2cSJim Jagielski // Hidden
2894*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_HIDDEN );
2895*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_HIDDEN );
2896*b1cdbd2cSJim Jagielski eState = m_aHiddenBtn.GetState();
2897*b1cdbd2cSJim Jagielski bChanged = sal_True;
2898*b1cdbd2cSJim Jagielski
2899*b1cdbd2cSJim Jagielski if ( pOld )
2900*b1cdbd2cSJim Jagielski {
2901*b1cdbd2cSJim Jagielski const SvxCharHiddenItem& rItem = *( (const SvxCharHiddenItem*)pOld );
2902*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == StateToAttr( eState ) && m_aHiddenBtn.GetSavedValue() == eState )
2903*b1cdbd2cSJim Jagielski bChanged = sal_False;
2904*b1cdbd2cSJim Jagielski }
2905*b1cdbd2cSJim Jagielski
2906*b1cdbd2cSJim Jagielski if ( !bChanged && pExampleSet && pExampleSet->GetItemState( nWhich, sal_False, &pItem ) == SFX_ITEM_SET &&
2907*b1cdbd2cSJim Jagielski !StateToAttr( eState ) && ( (SvxCharHiddenItem*)pItem )->GetValue() )
2908*b1cdbd2cSJim Jagielski bChanged = sal_True;
2909*b1cdbd2cSJim Jagielski
2910*b1cdbd2cSJim Jagielski if ( bChanged && eState != STATE_DONTKNOW )
2911*b1cdbd2cSJim Jagielski {
2912*b1cdbd2cSJim Jagielski rSet.Put( SvxCharHiddenItem( StateToAttr( eState ), nWhich ) );
2913*b1cdbd2cSJim Jagielski bModified = sal_True;
2914*b1cdbd2cSJim Jagielski }
2915*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
2916*b1cdbd2cSJim Jagielski CLEARTITEM;
2917*b1cdbd2cSJim Jagielski
2918*b1cdbd2cSJim Jagielski bModified |= FillItemSetColor_Impl( rSet );
2919*b1cdbd2cSJim Jagielski
2920*b1cdbd2cSJim Jagielski return bModified;
2921*b1cdbd2cSJim Jagielski }
2922*b1cdbd2cSJim Jagielski
DisableControls(sal_uInt16 nDisable)2923*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::DisableControls( sal_uInt16 nDisable )
2924*b1cdbd2cSJim Jagielski {
2925*b1cdbd2cSJim Jagielski if ( ( DISABLE_CASEMAP & nDisable ) == DISABLE_CASEMAP )
2926*b1cdbd2cSJim Jagielski {
2927*b1cdbd2cSJim Jagielski m_aEffectsFT.Disable();
2928*b1cdbd2cSJim Jagielski m_aEffects2LB.Disable();
2929*b1cdbd2cSJim Jagielski }
2930*b1cdbd2cSJim Jagielski
2931*b1cdbd2cSJim Jagielski if ( ( DISABLE_WORDLINE & nDisable ) == DISABLE_WORDLINE )
2932*b1cdbd2cSJim Jagielski m_aIndividualWordsBtn.Disable();
2933*b1cdbd2cSJim Jagielski
2934*b1cdbd2cSJim Jagielski if ( ( DISABLE_BLINK & nDisable ) == DISABLE_BLINK )
2935*b1cdbd2cSJim Jagielski m_aBlinkingBtn.Disable();
2936*b1cdbd2cSJim Jagielski
2937*b1cdbd2cSJim Jagielski if ( ( DISABLE_UNDERLINE_COLOR & nDisable ) == DISABLE_UNDERLINE_COLOR )
2938*b1cdbd2cSJim Jagielski {
2939*b1cdbd2cSJim Jagielski // disable the controls
2940*b1cdbd2cSJim Jagielski m_aUnderlineColorFT.Disable( );
2941*b1cdbd2cSJim Jagielski m_aUnderlineColorLB.Disable( );
2942*b1cdbd2cSJim Jagielski // and reroute the selection handler of the controls which normally would affect the color box dis-/enabling
2943*b1cdbd2cSJim Jagielski m_aUnderlineLB.SetSelectHdl(LINK(this, SvxCharEffectsPage, UpdatePreview_Impl));
2944*b1cdbd2cSJim Jagielski m_aStrikeoutLB.SetSelectHdl(LINK(this, SvxCharEffectsPage, UpdatePreview_Impl));
2945*b1cdbd2cSJim Jagielski }
2946*b1cdbd2cSJim Jagielski }
2947*b1cdbd2cSJim Jagielski
EnableFlash()2948*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::EnableFlash()
2949*b1cdbd2cSJim Jagielski {
2950*b1cdbd2cSJim Jagielski if ( !( ( m_nHtmlMode & HTMLMODE_ON ) && !( m_nHtmlMode & HTMLMODE_BLINK ) ) )
2951*b1cdbd2cSJim Jagielski m_aBlinkingBtn.Show();
2952*b1cdbd2cSJim Jagielski }
2953*b1cdbd2cSJim Jagielski
2954*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
SetPreviewBackgroundToCharacter()2955*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::SetPreviewBackgroundToCharacter()
2956*b1cdbd2cSJim Jagielski {
2957*b1cdbd2cSJim Jagielski m_bPreviewBackgroundToCharacter = sal_True;
2958*b1cdbd2cSJim Jagielski }
2959*b1cdbd2cSJim Jagielski
2960*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
PageCreated(SfxAllItemSet aSet)2961*b1cdbd2cSJim Jagielski void SvxCharEffectsPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
2962*b1cdbd2cSJim Jagielski {
2963*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pDisableCtlItem,SfxUInt16Item,SID_DISABLE_CTL,sal_False);
2964*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_FLAG_TYPE,sal_False);
2965*b1cdbd2cSJim Jagielski if (pDisableCtlItem)
2966*b1cdbd2cSJim Jagielski DisableControls(pDisableCtlItem->GetValue());
2967*b1cdbd2cSJim Jagielski
2968*b1cdbd2cSJim Jagielski if (pFlagItem)
2969*b1cdbd2cSJim Jagielski {
2970*b1cdbd2cSJim Jagielski sal_uInt32 nFlags=pFlagItem->GetValue();
2971*b1cdbd2cSJim Jagielski if ( ( nFlags & SVX_ENABLE_FLASH ) == SVX_ENABLE_FLASH )
2972*b1cdbd2cSJim Jagielski EnableFlash();
2973*b1cdbd2cSJim Jagielski if ( ( nFlags & SVX_PREVIEW_CHARACTER ) == SVX_PREVIEW_CHARACTER )
2974*b1cdbd2cSJim Jagielski SetPreviewBackgroundToCharacter();
2975*b1cdbd2cSJim Jagielski }
2976*b1cdbd2cSJim Jagielski }
2977*b1cdbd2cSJim Jagielski
2978*b1cdbd2cSJim Jagielski // class SvxCharPositionPage ---------------------------------------------
2979*b1cdbd2cSJim Jagielski
SvxCharPositionPage(Window * pParent,const SfxItemSet & rInSet)2980*b1cdbd2cSJim Jagielski SvxCharPositionPage::SvxCharPositionPage( Window* pParent, const SfxItemSet& rInSet ) :
2981*b1cdbd2cSJim Jagielski
2982*b1cdbd2cSJim Jagielski SvxCharBasePage( pParent, CUI_RES( RID_SVXPAGE_CHAR_POSITION ), rInSet, WIN_POS_PREVIEW, FT_POS_FONTTYPE ),
2983*b1cdbd2cSJim Jagielski
2984*b1cdbd2cSJim Jagielski m_aPositionLine ( this, CUI_RES( FL_POSITION ) ),
2985*b1cdbd2cSJim Jagielski m_aHighPosBtn ( this, CUI_RES( RB_HIGHPOS ) ),
2986*b1cdbd2cSJim Jagielski m_aNormalPosBtn ( this, CUI_RES( RB_NORMALPOS ) ),
2987*b1cdbd2cSJim Jagielski m_aLowPosBtn ( this, CUI_RES( RB_LOWPOS ) ),
2988*b1cdbd2cSJim Jagielski m_aHighLowFT ( this, CUI_RES( FT_HIGHLOW ) ),
2989*b1cdbd2cSJim Jagielski m_aHighLowEdit ( this, CUI_RES( ED_HIGHLOW ) ),
2990*b1cdbd2cSJim Jagielski m_aHighLowRB ( this, CUI_RES( CB_HIGHLOW ) ),
2991*b1cdbd2cSJim Jagielski m_aFontSizeFT ( this, CUI_RES( FT_FONTSIZE ) ),
2992*b1cdbd2cSJim Jagielski m_aFontSizeEdit ( this, CUI_RES( ED_FONTSIZE ) ),
2993*b1cdbd2cSJim Jagielski m_aRotationScalingFL( this, CUI_RES( FL_ROTATION_SCALING ) ),
2994*b1cdbd2cSJim Jagielski m_aScalingFL ( this, CUI_RES( FL_SCALING ) ),
2995*b1cdbd2cSJim Jagielski m_a0degRB ( this, CUI_RES( RB_0_DEG ) ),
2996*b1cdbd2cSJim Jagielski m_a90degRB ( this, CUI_RES( RB_90_DEG ) ),
2997*b1cdbd2cSJim Jagielski m_a270degRB ( this, CUI_RES( RB_270_DEG ) ),
2998*b1cdbd2cSJim Jagielski m_aFitToLineCB ( this, CUI_RES( CB_FIT_TO_LINE ) ),
2999*b1cdbd2cSJim Jagielski m_aScaleWidthFT ( this, CUI_RES( FT_SCALE_WIDTH ) ),
3000*b1cdbd2cSJim Jagielski m_aScaleWidthMF ( this, CUI_RES( MF_SCALE_WIDTH ) ),
3001*b1cdbd2cSJim Jagielski
3002*b1cdbd2cSJim Jagielski m_aKerningLine ( this, CUI_RES( FL_KERNING2 ) ),
3003*b1cdbd2cSJim Jagielski m_aKerningLB ( this, CUI_RES( LB_KERNING2 ) ),
3004*b1cdbd2cSJim Jagielski m_aKerningFT ( this, CUI_RES( FT_KERNING2 ) ),
3005*b1cdbd2cSJim Jagielski m_aKerningEdit ( this, CUI_RES( ED_KERNING2 ) ),
3006*b1cdbd2cSJim Jagielski m_aPairKerningBtn ( this, CUI_RES( CB_PAIRKERNING ) ),
3007*b1cdbd2cSJim Jagielski
3008*b1cdbd2cSJim Jagielski m_nSuperEsc ( (short)DFLT_ESC_SUPER ),
3009*b1cdbd2cSJim Jagielski m_nSubEsc ( (short)DFLT_ESC_SUB ),
3010*b1cdbd2cSJim Jagielski m_nScaleWidthItemSetVal ( 100 ),
3011*b1cdbd2cSJim Jagielski m_nScaleWidthInitialVal ( 100 ),
3012*b1cdbd2cSJim Jagielski m_nSuperProp ( (sal_uInt8)DFLT_ESC_PROP ),
3013*b1cdbd2cSJim Jagielski m_nSubProp ( (sal_uInt8)DFLT_ESC_PROP )
3014*b1cdbd2cSJim Jagielski {
3015*b1cdbd2cSJim Jagielski FreeResource();
3016*b1cdbd2cSJim Jagielski Initialize();
3017*b1cdbd2cSJim Jagielski }
3018*b1cdbd2cSJim Jagielski
3019*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3020*b1cdbd2cSJim Jagielski
Initialize()3021*b1cdbd2cSJim Jagielski void SvxCharPositionPage::Initialize()
3022*b1cdbd2cSJim Jagielski {
3023*b1cdbd2cSJim Jagielski // to handle the changes of the other pages
3024*b1cdbd2cSJim Jagielski SetExchangeSupport();
3025*b1cdbd2cSJim Jagielski
3026*b1cdbd2cSJim Jagielski GetPreviewFont().SetSize( Size( 0, 240 ) );
3027*b1cdbd2cSJim Jagielski GetPreviewCJKFont().SetSize( Size( 0, 240 ) );
3028*b1cdbd2cSJim Jagielski GetPreviewCTLFont().SetSize( Size( 0, 240 ) );
3029*b1cdbd2cSJim Jagielski
3030*b1cdbd2cSJim Jagielski m_aNormalPosBtn.Check();
3031*b1cdbd2cSJim Jagielski PositionHdl_Impl( &m_aNormalPosBtn );
3032*b1cdbd2cSJim Jagielski m_aKerningLB.SelectEntryPos( 0 );
3033*b1cdbd2cSJim Jagielski KerningSelectHdl_Impl( NULL );
3034*b1cdbd2cSJim Jagielski
3035*b1cdbd2cSJim Jagielski Link aLink = LINK( this, SvxCharPositionPage, PositionHdl_Impl );
3036*b1cdbd2cSJim Jagielski m_aHighPosBtn.SetClickHdl( aLink );
3037*b1cdbd2cSJim Jagielski m_aNormalPosBtn.SetClickHdl( aLink );
3038*b1cdbd2cSJim Jagielski m_aLowPosBtn.SetClickHdl( aLink );
3039*b1cdbd2cSJim Jagielski
3040*b1cdbd2cSJim Jagielski aLink = LINK( this, SvxCharPositionPage, RotationHdl_Impl );
3041*b1cdbd2cSJim Jagielski m_a0degRB .SetClickHdl( aLink );
3042*b1cdbd2cSJim Jagielski m_a90degRB .SetClickHdl( aLink );
3043*b1cdbd2cSJim Jagielski m_a270degRB.SetClickHdl( aLink );
3044*b1cdbd2cSJim Jagielski
3045*b1cdbd2cSJim Jagielski aLink = LINK( this, SvxCharPositionPage, FontModifyHdl_Impl );
3046*b1cdbd2cSJim Jagielski m_aHighLowEdit.SetModifyHdl( aLink );
3047*b1cdbd2cSJim Jagielski m_aFontSizeEdit.SetModifyHdl( aLink );
3048*b1cdbd2cSJim Jagielski
3049*b1cdbd2cSJim Jagielski aLink = LINK( this, SvxCharPositionPage, LoseFocusHdl_Impl );
3050*b1cdbd2cSJim Jagielski m_aHighLowEdit.SetLoseFocusHdl( aLink );
3051*b1cdbd2cSJim Jagielski m_aFontSizeEdit.SetLoseFocusHdl( aLink );
3052*b1cdbd2cSJim Jagielski
3053*b1cdbd2cSJim Jagielski m_aHighLowRB.SetClickHdl( LINK( this, SvxCharPositionPage, AutoPositionHdl_Impl ) );
3054*b1cdbd2cSJim Jagielski m_aFitToLineCB.SetClickHdl( LINK( this, SvxCharPositionPage, FitToLineHdl_Impl ) );
3055*b1cdbd2cSJim Jagielski m_aKerningLB.SetSelectHdl( LINK( this, SvxCharPositionPage, KerningSelectHdl_Impl ) );
3056*b1cdbd2cSJim Jagielski m_aKerningEdit.SetModifyHdl( LINK( this, SvxCharPositionPage, KerningModifyHdl_Impl ) );
3057*b1cdbd2cSJim Jagielski m_aPairKerningBtn.SetClickHdl( LINK( this, SvxCharPositionPage, PairKerningHdl_Impl ) );
3058*b1cdbd2cSJim Jagielski m_aScaleWidthMF.SetModifyHdl( LINK( this, SvxCharPositionPage, ScaleWidthModifyHdl_Impl ) );
3059*b1cdbd2cSJim Jagielski }
3060*b1cdbd2cSJim Jagielski
3061*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3062*b1cdbd2cSJim Jagielski
UpdatePreview_Impl(sal_uInt8 nProp,sal_uInt8 nEscProp,short nEsc)3063*b1cdbd2cSJim Jagielski void SvxCharPositionPage::UpdatePreview_Impl( sal_uInt8 nProp, sal_uInt8 nEscProp, short nEsc )
3064*b1cdbd2cSJim Jagielski {
3065*b1cdbd2cSJim Jagielski SetPrevFontEscapement( nProp, nEscProp, nEsc );
3066*b1cdbd2cSJim Jagielski }
3067*b1cdbd2cSJim Jagielski
3068*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3069*b1cdbd2cSJim Jagielski
SetEscapement_Impl(sal_uInt16 nEsc)3070*b1cdbd2cSJim Jagielski void SvxCharPositionPage::SetEscapement_Impl( sal_uInt16 nEsc )
3071*b1cdbd2cSJim Jagielski {
3072*b1cdbd2cSJim Jagielski SvxEscapementItem aEscItm( (SvxEscapement)nEsc, SID_ATTR_CHAR_ESCAPEMENT );
3073*b1cdbd2cSJim Jagielski
3074*b1cdbd2cSJim Jagielski if ( SVX_ESCAPEMENT_SUPERSCRIPT == nEsc )
3075*b1cdbd2cSJim Jagielski {
3076*b1cdbd2cSJim Jagielski aEscItm.GetEsc() = m_nSuperEsc;
3077*b1cdbd2cSJim Jagielski aEscItm.GetProp() = m_nSuperProp;
3078*b1cdbd2cSJim Jagielski }
3079*b1cdbd2cSJim Jagielski else if ( SVX_ESCAPEMENT_SUBSCRIPT == nEsc )
3080*b1cdbd2cSJim Jagielski {
3081*b1cdbd2cSJim Jagielski aEscItm.GetEsc() = m_nSubEsc;
3082*b1cdbd2cSJim Jagielski aEscItm.GetProp() = m_nSubProp;
3083*b1cdbd2cSJim Jagielski }
3084*b1cdbd2cSJim Jagielski
3085*b1cdbd2cSJim Jagielski short nFac = aEscItm.GetEsc() < 0 ? -1 : 1;
3086*b1cdbd2cSJim Jagielski
3087*b1cdbd2cSJim Jagielski m_aHighLowEdit.SetValue( aEscItm.GetEsc() * nFac );
3088*b1cdbd2cSJim Jagielski m_aFontSizeEdit.SetValue( aEscItm.GetProp() );
3089*b1cdbd2cSJim Jagielski
3090*b1cdbd2cSJim Jagielski if ( SVX_ESCAPEMENT_OFF == nEsc )
3091*b1cdbd2cSJim Jagielski {
3092*b1cdbd2cSJim Jagielski m_aHighLowFT.Disable();
3093*b1cdbd2cSJim Jagielski m_aHighLowEdit.Disable();
3094*b1cdbd2cSJim Jagielski m_aFontSizeFT.Disable();
3095*b1cdbd2cSJim Jagielski m_aFontSizeEdit.Disable();
3096*b1cdbd2cSJim Jagielski m_aHighLowRB.Disable();
3097*b1cdbd2cSJim Jagielski }
3098*b1cdbd2cSJim Jagielski else
3099*b1cdbd2cSJim Jagielski {
3100*b1cdbd2cSJim Jagielski m_aFontSizeFT.Enable();
3101*b1cdbd2cSJim Jagielski m_aFontSizeEdit.Enable();
3102*b1cdbd2cSJim Jagielski m_aHighLowRB.Enable();
3103*b1cdbd2cSJim Jagielski
3104*b1cdbd2cSJim Jagielski if ( !m_aHighLowRB.IsChecked() )
3105*b1cdbd2cSJim Jagielski {
3106*b1cdbd2cSJim Jagielski m_aHighLowFT.Enable();
3107*b1cdbd2cSJim Jagielski m_aHighLowEdit.Enable();
3108*b1cdbd2cSJim Jagielski }
3109*b1cdbd2cSJim Jagielski else
3110*b1cdbd2cSJim Jagielski AutoPositionHdl_Impl( &m_aHighLowRB );
3111*b1cdbd2cSJim Jagielski }
3112*b1cdbd2cSJim Jagielski
3113*b1cdbd2cSJim Jagielski UpdatePreview_Impl( 100, aEscItm.GetProp(), aEscItm.GetEsc() );
3114*b1cdbd2cSJim Jagielski }
3115*b1cdbd2cSJim Jagielski
3116*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3117*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,PositionHdl_Impl,RadioButton *,pBtn)3118*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, PositionHdl_Impl, RadioButton*, pBtn )
3119*b1cdbd2cSJim Jagielski {
3120*b1cdbd2cSJim Jagielski sal_uInt16 nEsc = SVX_ESCAPEMENT_OFF; // also when pBtn == NULL
3121*b1cdbd2cSJim Jagielski
3122*b1cdbd2cSJim Jagielski if ( &m_aHighPosBtn == pBtn )
3123*b1cdbd2cSJim Jagielski nEsc = SVX_ESCAPEMENT_SUPERSCRIPT;
3124*b1cdbd2cSJim Jagielski else if ( &m_aLowPosBtn == pBtn )
3125*b1cdbd2cSJim Jagielski nEsc = SVX_ESCAPEMENT_SUBSCRIPT;
3126*b1cdbd2cSJim Jagielski
3127*b1cdbd2cSJim Jagielski SetEscapement_Impl( nEsc );
3128*b1cdbd2cSJim Jagielski return 0;
3129*b1cdbd2cSJim Jagielski }
3130*b1cdbd2cSJim Jagielski
3131*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3132*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,RotationHdl_Impl,RadioButton *,pBtn)3133*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, RotationHdl_Impl, RadioButton*, pBtn )
3134*b1cdbd2cSJim Jagielski {
3135*b1cdbd2cSJim Jagielski sal_Bool bEnable = sal_False;
3136*b1cdbd2cSJim Jagielski if (&m_a90degRB == pBtn || &m_a270degRB == pBtn)
3137*b1cdbd2cSJim Jagielski bEnable = sal_True;
3138*b1cdbd2cSJim Jagielski else
3139*b1cdbd2cSJim Jagielski OSL_ENSURE( &m_a0degRB == pBtn, "unexpected button" );
3140*b1cdbd2cSJim Jagielski m_aFitToLineCB.Enable( bEnable );
3141*b1cdbd2cSJim Jagielski return 0;
3142*b1cdbd2cSJim Jagielski }
3143*b1cdbd2cSJim Jagielski
3144*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3145*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,FontModifyHdl_Impl,MetricField *,EMPTYARG)3146*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, FontModifyHdl_Impl, MetricField*, EMPTYARG )
3147*b1cdbd2cSJim Jagielski {
3148*b1cdbd2cSJim Jagielski sal_uInt8 nEscProp = (sal_uInt8)m_aFontSizeEdit.GetValue();
3149*b1cdbd2cSJim Jagielski short nEsc = (short)m_aHighLowEdit.GetValue();
3150*b1cdbd2cSJim Jagielski nEsc *= m_aLowPosBtn.IsChecked() ? -1 : 1;
3151*b1cdbd2cSJim Jagielski UpdatePreview_Impl( 100, nEscProp, nEsc );
3152*b1cdbd2cSJim Jagielski return 0;
3153*b1cdbd2cSJim Jagielski }
3154*b1cdbd2cSJim Jagielski
3155*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3156*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,AutoPositionHdl_Impl,CheckBox *,pBox)3157*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, AutoPositionHdl_Impl, CheckBox*, pBox )
3158*b1cdbd2cSJim Jagielski {
3159*b1cdbd2cSJim Jagielski if ( pBox->IsChecked() )
3160*b1cdbd2cSJim Jagielski {
3161*b1cdbd2cSJim Jagielski m_aHighLowFT.Disable();
3162*b1cdbd2cSJim Jagielski m_aHighLowEdit.Disable();
3163*b1cdbd2cSJim Jagielski }
3164*b1cdbd2cSJim Jagielski else
3165*b1cdbd2cSJim Jagielski PositionHdl_Impl( m_aHighPosBtn.IsChecked() ? &m_aHighPosBtn
3166*b1cdbd2cSJim Jagielski : m_aLowPosBtn.IsChecked() ? &m_aLowPosBtn
3167*b1cdbd2cSJim Jagielski : &m_aNormalPosBtn );
3168*b1cdbd2cSJim Jagielski return 0;
3169*b1cdbd2cSJim Jagielski }
3170*b1cdbd2cSJim Jagielski
3171*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3172*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,FitToLineHdl_Impl,CheckBox *,pBox)3173*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, FitToLineHdl_Impl, CheckBox*, pBox )
3174*b1cdbd2cSJim Jagielski {
3175*b1cdbd2cSJim Jagielski if ( &m_aFitToLineCB == pBox)
3176*b1cdbd2cSJim Jagielski {
3177*b1cdbd2cSJim Jagielski sal_uInt16 nVal = m_nScaleWidthInitialVal;
3178*b1cdbd2cSJim Jagielski if (m_aFitToLineCB.IsChecked())
3179*b1cdbd2cSJim Jagielski nVal = m_nScaleWidthItemSetVal;
3180*b1cdbd2cSJim Jagielski m_aScaleWidthMF.SetValue( nVal );
3181*b1cdbd2cSJim Jagielski
3182*b1cdbd2cSJim Jagielski m_aPreviewWin.SetFontWidthScale( nVal );
3183*b1cdbd2cSJim Jagielski }
3184*b1cdbd2cSJim Jagielski return 0;
3185*b1cdbd2cSJim Jagielski }
3186*b1cdbd2cSJim Jagielski
3187*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3188*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,KerningSelectHdl_Impl,ListBox *,EMPTYARG)3189*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, KerningSelectHdl_Impl, ListBox*, EMPTYARG )
3190*b1cdbd2cSJim Jagielski {
3191*b1cdbd2cSJim Jagielski if ( m_aKerningLB.GetSelectEntryPos() > 0 )
3192*b1cdbd2cSJim Jagielski {
3193*b1cdbd2cSJim Jagielski m_aKerningFT.Enable();
3194*b1cdbd2cSJim Jagielski m_aKerningEdit.Enable();
3195*b1cdbd2cSJim Jagielski
3196*b1cdbd2cSJim Jagielski if ( m_aKerningLB.GetSelectEntryPos() == 2 )
3197*b1cdbd2cSJim Jagielski {
3198*b1cdbd2cSJim Jagielski // Condensed -> max value == 1/6 of the current font height
3199*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
3200*b1cdbd2cSJim Jagielski long nMax = rFont.GetSize().Height() / 6;
3201*b1cdbd2cSJim Jagielski m_aKerningEdit.SetMax( m_aKerningEdit.Normalize( nMax ), FUNIT_TWIP );
3202*b1cdbd2cSJim Jagielski m_aKerningEdit.SetLast( m_aKerningEdit.GetMax( m_aKerningEdit.GetUnit() ) );
3203*b1cdbd2cSJim Jagielski }
3204*b1cdbd2cSJim Jagielski else
3205*b1cdbd2cSJim Jagielski {
3206*b1cdbd2cSJim Jagielski m_aKerningEdit.SetMax( 9999 );
3207*b1cdbd2cSJim Jagielski m_aKerningEdit.SetLast( 9999 );
3208*b1cdbd2cSJim Jagielski }
3209*b1cdbd2cSJim Jagielski }
3210*b1cdbd2cSJim Jagielski else
3211*b1cdbd2cSJim Jagielski {
3212*b1cdbd2cSJim Jagielski m_aKerningEdit.SetValue( 0 );
3213*b1cdbd2cSJim Jagielski m_aKerningFT.Disable();
3214*b1cdbd2cSJim Jagielski m_aKerningEdit.Disable();
3215*b1cdbd2cSJim Jagielski }
3216*b1cdbd2cSJim Jagielski
3217*b1cdbd2cSJim Jagielski KerningModifyHdl_Impl( NULL );
3218*b1cdbd2cSJim Jagielski
3219*b1cdbd2cSJim Jagielski return 0;
3220*b1cdbd2cSJim Jagielski }
3221*b1cdbd2cSJim Jagielski
3222*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3223*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,KerningModifyHdl_Impl,MetricField *,EMPTYARG)3224*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, KerningModifyHdl_Impl, MetricField*, EMPTYARG )
3225*b1cdbd2cSJim Jagielski {
3226*b1cdbd2cSJim Jagielski long nVal = static_cast<long>(m_aKerningEdit.GetValue());
3227*b1cdbd2cSJim Jagielski nVal = LogicToLogic( nVal, MAP_POINT, MAP_TWIP );
3228*b1cdbd2cSJim Jagielski long nKern = (short)m_aKerningEdit.Denormalize( nVal );
3229*b1cdbd2cSJim Jagielski
3230*b1cdbd2cSJim Jagielski // Condensed? -> then negative
3231*b1cdbd2cSJim Jagielski if ( m_aKerningLB.GetSelectEntryPos() == 2 )
3232*b1cdbd2cSJim Jagielski nKern *= -1;
3233*b1cdbd2cSJim Jagielski
3234*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
3235*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
3236*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
3237*b1cdbd2cSJim Jagielski
3238*b1cdbd2cSJim Jagielski rFont.SetFixKerning( (short)nKern );
3239*b1cdbd2cSJim Jagielski rCJKFont.SetFixKerning( (short)nKern );
3240*b1cdbd2cSJim Jagielski rCTLFont.SetFixKerning( (short)nKern );
3241*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
3242*b1cdbd2cSJim Jagielski return 0;
3243*b1cdbd2cSJim Jagielski }
3244*b1cdbd2cSJim Jagielski
3245*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3246*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,PairKerningHdl_Impl,CheckBox *,EMPTYARG)3247*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, PairKerningHdl_Impl, CheckBox*, EMPTYARG )
3248*b1cdbd2cSJim Jagielski {
3249*b1cdbd2cSJim Jagielski return 0;
3250*b1cdbd2cSJim Jagielski }
3251*b1cdbd2cSJim Jagielski
3252*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3253*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,LoseFocusHdl_Impl,MetricField *,pField)3254*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, LoseFocusHdl_Impl, MetricField*, pField )
3255*b1cdbd2cSJim Jagielski {
3256*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
3257*b1cdbd2cSJim Jagielski sal_Bool bHigh = m_aHighPosBtn.IsChecked();
3258*b1cdbd2cSJim Jagielski #endif
3259*b1cdbd2cSJim Jagielski sal_Bool bLow = m_aLowPosBtn.IsChecked();
3260*b1cdbd2cSJim Jagielski DBG_ASSERT( bHigh || bLow, "normal position is not valid" );
3261*b1cdbd2cSJim Jagielski
3262*b1cdbd2cSJim Jagielski if ( &m_aHighLowEdit == pField )
3263*b1cdbd2cSJim Jagielski {
3264*b1cdbd2cSJim Jagielski if ( bLow )
3265*b1cdbd2cSJim Jagielski m_nSubEsc = (short)m_aHighLowEdit.GetValue() * -1;
3266*b1cdbd2cSJim Jagielski else
3267*b1cdbd2cSJim Jagielski m_nSuperEsc = (short)m_aHighLowEdit.GetValue();
3268*b1cdbd2cSJim Jagielski }
3269*b1cdbd2cSJim Jagielski else if ( &m_aFontSizeEdit == pField )
3270*b1cdbd2cSJim Jagielski {
3271*b1cdbd2cSJim Jagielski if ( bLow )
3272*b1cdbd2cSJim Jagielski m_nSubProp = (sal_uInt8)m_aFontSizeEdit.GetValue();
3273*b1cdbd2cSJim Jagielski else
3274*b1cdbd2cSJim Jagielski m_nSuperProp = (sal_uInt8)m_aFontSizeEdit.GetValue();
3275*b1cdbd2cSJim Jagielski }
3276*b1cdbd2cSJim Jagielski return 0;
3277*b1cdbd2cSJim Jagielski }
3278*b1cdbd2cSJim Jagielski
3279*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3280*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharPositionPage,ScaleWidthModifyHdl_Impl,MetricField *,EMPTYARG)3281*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharPositionPage, ScaleWidthModifyHdl_Impl, MetricField*, EMPTYARG )
3282*b1cdbd2cSJim Jagielski {
3283*b1cdbd2cSJim Jagielski m_aPreviewWin.SetFontWidthScale( sal_uInt16( m_aScaleWidthMF.GetValue() ) );
3284*b1cdbd2cSJim Jagielski
3285*b1cdbd2cSJim Jagielski return 0;
3286*b1cdbd2cSJim Jagielski }
3287*b1cdbd2cSJim Jagielski
3288*b1cdbd2cSJim Jagielski /* -----------------28.08.2003 12:12-----------------
3289*b1cdbd2cSJim Jagielski
3290*b1cdbd2cSJim Jagielski --------------------------------------------------*/
ActivatePage(const SfxItemSet & rSet)3291*b1cdbd2cSJim Jagielski void SvxCharPositionPage::ActivatePage( const SfxItemSet& rSet )
3292*b1cdbd2cSJim Jagielski {
3293*b1cdbd2cSJim Jagielski //update the preview
3294*b1cdbd2cSJim Jagielski SvxCharBasePage::ActivatePage( rSet );
3295*b1cdbd2cSJim Jagielski
3296*b1cdbd2cSJim Jagielski //the only thing that has to be checked is the max. allowed value for the
3297*b1cdbd2cSJim Jagielski //condense edit field
3298*b1cdbd2cSJim Jagielski if ( m_aKerningLB.GetSelectEntryPos() == 2 )
3299*b1cdbd2cSJim Jagielski {
3300*b1cdbd2cSJim Jagielski // Condensed -> max value == 1/6 of the current font height
3301*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
3302*b1cdbd2cSJim Jagielski long nMax = rFont.GetSize().Height() / 6;
3303*b1cdbd2cSJim Jagielski long nKern = (short)m_aKerningEdit.Denormalize( LogicToLogic( static_cast<long>(m_aKerningEdit.GetValue()), MAP_POINT, MAP_TWIP ) );
3304*b1cdbd2cSJim Jagielski m_aKerningEdit.SetMax( m_aKerningEdit.Normalize( nKern > nMax ? nKern : nMax ), FUNIT_TWIP );
3305*b1cdbd2cSJim Jagielski m_aKerningEdit.SetLast( m_aKerningEdit.GetMax( m_aKerningEdit.GetUnit() ) );
3306*b1cdbd2cSJim Jagielski }
3307*b1cdbd2cSJim Jagielski }
3308*b1cdbd2cSJim Jagielski
3309*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3310*b1cdbd2cSJim Jagielski
DeactivatePage(SfxItemSet * _pSet)3311*b1cdbd2cSJim Jagielski int SvxCharPositionPage::DeactivatePage( SfxItemSet* _pSet )
3312*b1cdbd2cSJim Jagielski {
3313*b1cdbd2cSJim Jagielski if ( _pSet )
3314*b1cdbd2cSJim Jagielski FillItemSet( *_pSet );
3315*b1cdbd2cSJim Jagielski return LEAVE_PAGE;
3316*b1cdbd2cSJim Jagielski }
3317*b1cdbd2cSJim Jagielski
3318*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3319*b1cdbd2cSJim Jagielski
Create(Window * pParent,const SfxItemSet & rSet)3320*b1cdbd2cSJim Jagielski SfxTabPage* SvxCharPositionPage::Create( Window* pParent, const SfxItemSet& rSet )
3321*b1cdbd2cSJim Jagielski {
3322*b1cdbd2cSJim Jagielski return new SvxCharPositionPage( pParent, rSet );
3323*b1cdbd2cSJim Jagielski }
3324*b1cdbd2cSJim Jagielski
3325*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3326*b1cdbd2cSJim Jagielski
GetRanges()3327*b1cdbd2cSJim Jagielski sal_uInt16* SvxCharPositionPage::GetRanges()
3328*b1cdbd2cSJim Jagielski {
3329*b1cdbd2cSJim Jagielski return pPositionRanges;
3330*b1cdbd2cSJim Jagielski }
3331*b1cdbd2cSJim Jagielski
3332*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
Reset(const SfxItemSet & rSet)3333*b1cdbd2cSJim Jagielski void SvxCharPositionPage::Reset( const SfxItemSet& rSet )
3334*b1cdbd2cSJim Jagielski {
3335*b1cdbd2cSJim Jagielski String sUser = GetUserData();
3336*b1cdbd2cSJim Jagielski
3337*b1cdbd2cSJim Jagielski if ( sUser.Len() )
3338*b1cdbd2cSJim Jagielski {
3339*b1cdbd2cSJim Jagielski m_nSuperEsc = (short)sUser.GetToken( 0 ).ToInt32();
3340*b1cdbd2cSJim Jagielski m_nSubEsc = (short)sUser.GetToken( 1 ).ToInt32();
3341*b1cdbd2cSJim Jagielski m_nSuperProp = (sal_uInt8)sUser.GetToken( 2 ).ToInt32();
3342*b1cdbd2cSJim Jagielski m_nSubProp = (sal_uInt8)sUser.GetToken( 3 ).ToInt32();
3343*b1cdbd2cSJim Jagielski }
3344*b1cdbd2cSJim Jagielski
3345*b1cdbd2cSJim Jagielski short nEsc = 0;
3346*b1cdbd2cSJim Jagielski sal_uInt8 nEscProp = 100;
3347*b1cdbd2cSJim Jagielski sal_uInt8 nProp = 100;
3348*b1cdbd2cSJim Jagielski
3349*b1cdbd2cSJim Jagielski m_aHighLowFT.Disable();
3350*b1cdbd2cSJim Jagielski m_aHighLowEdit.Disable();
3351*b1cdbd2cSJim Jagielski m_aFontSizeFT.Disable();
3352*b1cdbd2cSJim Jagielski m_aFontSizeEdit.Disable();
3353*b1cdbd2cSJim Jagielski
3354*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
3355*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
3356*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
3357*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT );
3358*b1cdbd2cSJim Jagielski
3359*b1cdbd2cSJim Jagielski if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT )
3360*b1cdbd2cSJim Jagielski {
3361*b1cdbd2cSJim Jagielski const SvxEscapementItem& rItem = (SvxEscapementItem&)rSet.Get( nWhich );
3362*b1cdbd2cSJim Jagielski nEsc = rItem.GetEsc();
3363*b1cdbd2cSJim Jagielski nEscProp = rItem.GetProp();
3364*b1cdbd2cSJim Jagielski
3365*b1cdbd2cSJim Jagielski if ( nEsc != 0 )
3366*b1cdbd2cSJim Jagielski {
3367*b1cdbd2cSJim Jagielski m_aHighLowFT.Enable();
3368*b1cdbd2cSJim Jagielski m_aHighLowEdit.Enable();
3369*b1cdbd2cSJim Jagielski m_aFontSizeFT.Enable();
3370*b1cdbd2cSJim Jagielski m_aFontSizeEdit.Enable();
3371*b1cdbd2cSJim Jagielski
3372*b1cdbd2cSJim Jagielski short nFac;
3373*b1cdbd2cSJim Jagielski sal_Bool bAutomatic(sal_False);
3374*b1cdbd2cSJim Jagielski
3375*b1cdbd2cSJim Jagielski if ( nEsc > 0 )
3376*b1cdbd2cSJim Jagielski {
3377*b1cdbd2cSJim Jagielski nFac = 1;
3378*b1cdbd2cSJim Jagielski m_aHighPosBtn.Check( sal_True );
3379*b1cdbd2cSJim Jagielski if ( nEsc == DFLT_ESC_AUTO_SUPER )
3380*b1cdbd2cSJim Jagielski {
3381*b1cdbd2cSJim Jagielski nEsc = DFLT_ESC_SUPER;
3382*b1cdbd2cSJim Jagielski bAutomatic = sal_True;
3383*b1cdbd2cSJim Jagielski }
3384*b1cdbd2cSJim Jagielski }
3385*b1cdbd2cSJim Jagielski else
3386*b1cdbd2cSJim Jagielski {
3387*b1cdbd2cSJim Jagielski nFac = -1;
3388*b1cdbd2cSJim Jagielski m_aLowPosBtn.Check( sal_True );
3389*b1cdbd2cSJim Jagielski if ( nEsc == DFLT_ESC_AUTO_SUB )
3390*b1cdbd2cSJim Jagielski {
3391*b1cdbd2cSJim Jagielski nEsc = DFLT_ESC_SUB;
3392*b1cdbd2cSJim Jagielski bAutomatic = sal_True;
3393*b1cdbd2cSJim Jagielski }
3394*b1cdbd2cSJim Jagielski }
3395*b1cdbd2cSJim Jagielski if (!m_aHighLowRB.IsEnabled())
3396*b1cdbd2cSJim Jagielski {
3397*b1cdbd2cSJim Jagielski m_aHighLowRB.Enable();
3398*b1cdbd2cSJim Jagielski }
3399*b1cdbd2cSJim Jagielski m_aHighLowRB.Check(bAutomatic);
3400*b1cdbd2cSJim Jagielski
3401*b1cdbd2cSJim Jagielski if ( m_aHighLowRB.IsChecked() )
3402*b1cdbd2cSJim Jagielski {
3403*b1cdbd2cSJim Jagielski m_aHighLowFT.Disable();
3404*b1cdbd2cSJim Jagielski m_aHighLowEdit.Disable();
3405*b1cdbd2cSJim Jagielski }
3406*b1cdbd2cSJim Jagielski m_aHighLowEdit.SetValue( m_aHighLowEdit.Normalize( nFac * nEsc ) );
3407*b1cdbd2cSJim Jagielski }
3408*b1cdbd2cSJim Jagielski else
3409*b1cdbd2cSJim Jagielski {
3410*b1cdbd2cSJim Jagielski m_aNormalPosBtn.Check( sal_True );
3411*b1cdbd2cSJim Jagielski m_aHighLowRB.Check( sal_True );
3412*b1cdbd2cSJim Jagielski PositionHdl_Impl( NULL );
3413*b1cdbd2cSJim Jagielski }
3414*b1cdbd2cSJim Jagielski //the height has to be set after the handler is called to keep the value also if the escapement is zero
3415*b1cdbd2cSJim Jagielski m_aFontSizeEdit.SetValue( m_aFontSizeEdit.Normalize( nEscProp ) );
3416*b1cdbd2cSJim Jagielski }
3417*b1cdbd2cSJim Jagielski else
3418*b1cdbd2cSJim Jagielski {
3419*b1cdbd2cSJim Jagielski m_aHighPosBtn.Check( sal_False );
3420*b1cdbd2cSJim Jagielski m_aNormalPosBtn.Check( sal_False );
3421*b1cdbd2cSJim Jagielski m_aLowPosBtn.Check( sal_False );
3422*b1cdbd2cSJim Jagielski }
3423*b1cdbd2cSJim Jagielski
3424*b1cdbd2cSJim Jagielski // BspFont setzen
3425*b1cdbd2cSJim Jagielski SetPrevFontEscapement( nProp, nEscProp, nEsc );
3426*b1cdbd2cSJim Jagielski
3427*b1cdbd2cSJim Jagielski // Kerning
3428*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_KERNING );
3429*b1cdbd2cSJim Jagielski
3430*b1cdbd2cSJim Jagielski if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT )
3431*b1cdbd2cSJim Jagielski {
3432*b1cdbd2cSJim Jagielski const SvxKerningItem& rItem = (SvxKerningItem&)rSet.Get( nWhich );
3433*b1cdbd2cSJim Jagielski SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich );
3434*b1cdbd2cSJim Jagielski MapUnit eOrgUnit = (MapUnit)eUnit;
3435*b1cdbd2cSJim Jagielski MapUnit ePntUnit( MAP_POINT );
3436*b1cdbd2cSJim Jagielski long nBig = static_cast<long>(m_aKerningEdit.Normalize( static_cast<long>(rItem.GetValue()) ));
3437*b1cdbd2cSJim Jagielski long nKerning = LogicToLogic( nBig, eOrgUnit, ePntUnit );
3438*b1cdbd2cSJim Jagielski
3439*b1cdbd2cSJim Jagielski // Kerning am Font setzen, vorher in Twips umrechnen
3440*b1cdbd2cSJim Jagielski long nKern = LogicToLogic( rItem.GetValue(), (MapUnit)eUnit, MAP_TWIP );
3441*b1cdbd2cSJim Jagielski rFont.SetFixKerning( (short)nKern );
3442*b1cdbd2cSJim Jagielski rCJKFont.SetFixKerning( (short)nKern );
3443*b1cdbd2cSJim Jagielski rCTLFont.SetFixKerning( (short)nKern );
3444*b1cdbd2cSJim Jagielski
3445*b1cdbd2cSJim Jagielski if ( nKerning > 0 )
3446*b1cdbd2cSJim Jagielski {
3447*b1cdbd2cSJim Jagielski m_aKerningLB.SelectEntryPos( LW_GESPERRT );
3448*b1cdbd2cSJim Jagielski }
3449*b1cdbd2cSJim Jagielski else if ( nKerning < 0 )
3450*b1cdbd2cSJim Jagielski {
3451*b1cdbd2cSJim Jagielski m_aKerningLB.SelectEntryPos( LW_SCHMAL );
3452*b1cdbd2cSJim Jagielski nKerning = -nKerning;
3453*b1cdbd2cSJim Jagielski }
3454*b1cdbd2cSJim Jagielski else
3455*b1cdbd2cSJim Jagielski {
3456*b1cdbd2cSJim Jagielski nKerning = 0;
3457*b1cdbd2cSJim Jagielski m_aKerningLB.SelectEntryPos( LW_NORMAL );
3458*b1cdbd2cSJim Jagielski }
3459*b1cdbd2cSJim Jagielski //enable/disable and set min/max of the Edit
3460*b1cdbd2cSJim Jagielski KerningSelectHdl_Impl(&m_aKerningLB);
3461*b1cdbd2cSJim Jagielski //the attribute value must be displayed also if it's above the maximum allowed value
3462*b1cdbd2cSJim Jagielski long nVal = static_cast<long>(m_aKerningEdit.GetMax());
3463*b1cdbd2cSJim Jagielski if(nVal < nKerning)
3464*b1cdbd2cSJim Jagielski m_aKerningEdit.SetMax( nKerning );
3465*b1cdbd2cSJim Jagielski m_aKerningEdit.SetValue( nKerning );
3466*b1cdbd2cSJim Jagielski }
3467*b1cdbd2cSJim Jagielski else
3468*b1cdbd2cSJim Jagielski m_aKerningEdit.SetText( String() );
3469*b1cdbd2cSJim Jagielski
3470*b1cdbd2cSJim Jagielski // Pair kerning
3471*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_AUTOKERN );
3472*b1cdbd2cSJim Jagielski
3473*b1cdbd2cSJim Jagielski if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT )
3474*b1cdbd2cSJim Jagielski {
3475*b1cdbd2cSJim Jagielski const SvxAutoKernItem& rItem = (SvxAutoKernItem&)rSet.Get( nWhich );
3476*b1cdbd2cSJim Jagielski m_aPairKerningBtn.Check( rItem.GetValue() );
3477*b1cdbd2cSJim Jagielski }
3478*b1cdbd2cSJim Jagielski else
3479*b1cdbd2cSJim Jagielski m_aPairKerningBtn.Check( sal_False );
3480*b1cdbd2cSJim Jagielski
3481*b1cdbd2cSJim Jagielski // Scale Width
3482*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_SCALEWIDTH );
3483*b1cdbd2cSJim Jagielski if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT )
3484*b1cdbd2cSJim Jagielski {
3485*b1cdbd2cSJim Jagielski const SvxCharScaleWidthItem& rItem = ( SvxCharScaleWidthItem& ) rSet.Get( nWhich );
3486*b1cdbd2cSJim Jagielski m_nScaleWidthInitialVal = rItem.GetValue();
3487*b1cdbd2cSJim Jagielski m_aScaleWidthMF.SetValue( m_nScaleWidthInitialVal );
3488*b1cdbd2cSJim Jagielski }
3489*b1cdbd2cSJim Jagielski else
3490*b1cdbd2cSJim Jagielski m_aScaleWidthMF.SetValue( 100 );
3491*b1cdbd2cSJim Jagielski
3492*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_WIDTH_FIT_TO_LINE );
3493*b1cdbd2cSJim Jagielski if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT )
3494*b1cdbd2cSJim Jagielski m_nScaleWidthItemSetVal = ((SfxUInt16Item&) rSet.Get( nWhich )).GetValue();
3495*b1cdbd2cSJim Jagielski
3496*b1cdbd2cSJim Jagielski // Rotation
3497*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_ROTATED );
3498*b1cdbd2cSJim Jagielski SfxItemState eState = rSet.GetItemState( nWhich );
3499*b1cdbd2cSJim Jagielski if( SFX_ITEM_UNKNOWN == eState )
3500*b1cdbd2cSJim Jagielski {
3501*b1cdbd2cSJim Jagielski m_aRotationScalingFL.Hide();
3502*b1cdbd2cSJim Jagielski m_aScalingFL.Show();
3503*b1cdbd2cSJim Jagielski m_a0degRB.Hide();
3504*b1cdbd2cSJim Jagielski m_a90degRB.Hide();
3505*b1cdbd2cSJim Jagielski m_a270degRB.Hide();
3506*b1cdbd2cSJim Jagielski m_aFitToLineCB.Hide();
3507*b1cdbd2cSJim Jagielski m_aFitToLineCB .Hide();
3508*b1cdbd2cSJim Jagielski
3509*b1cdbd2cSJim Jagielski
3510*b1cdbd2cSJim Jagielski // move the following controls upwards
3511*b1cdbd2cSJim Jagielski Window* aCntrlArr[] = {
3512*b1cdbd2cSJim Jagielski &m_aScaleWidthFT, &m_aScaleWidthMF, &m_aKerningLine,
3513*b1cdbd2cSJim Jagielski &m_aKerningLB, &m_aKerningFT, &m_aKerningEdit, &m_aPairKerningBtn,
3514*b1cdbd2cSJim Jagielski 0 };
3515*b1cdbd2cSJim Jagielski
3516*b1cdbd2cSJim Jagielski long nDiff = m_aScaleWidthMF.GetPosPixel().Y() -
3517*b1cdbd2cSJim Jagielski m_a0degRB.GetPosPixel().Y();
3518*b1cdbd2cSJim Jagielski
3519*b1cdbd2cSJim Jagielski for( Window** ppW = aCntrlArr; *ppW; ++ppW )
3520*b1cdbd2cSJim Jagielski {
3521*b1cdbd2cSJim Jagielski Point aPnt( (*ppW)->GetPosPixel() );
3522*b1cdbd2cSJim Jagielski aPnt.Y() -= nDiff;
3523*b1cdbd2cSJim Jagielski (*ppW)->SetPosPixel( aPnt );
3524*b1cdbd2cSJim Jagielski }
3525*b1cdbd2cSJim Jagielski }
3526*b1cdbd2cSJim Jagielski else
3527*b1cdbd2cSJim Jagielski {
3528*b1cdbd2cSJim Jagielski m_aScalingFL.Hide();
3529*b1cdbd2cSJim Jagielski
3530*b1cdbd2cSJim Jagielski Link aOldLink( m_aFitToLineCB.GetClickHdl() );
3531*b1cdbd2cSJim Jagielski m_aFitToLineCB.SetClickHdl( Link() );
3532*b1cdbd2cSJim Jagielski if( eState >= SFX_ITEM_DEFAULT )
3533*b1cdbd2cSJim Jagielski {
3534*b1cdbd2cSJim Jagielski const SvxCharRotateItem& rItem =
3535*b1cdbd2cSJim Jagielski (SvxCharRotateItem&) rSet.Get( nWhich );
3536*b1cdbd2cSJim Jagielski if (rItem.IsBottomToTop())
3537*b1cdbd2cSJim Jagielski m_a90degRB.Check( sal_True );
3538*b1cdbd2cSJim Jagielski else if (rItem.IsTopToBotton())
3539*b1cdbd2cSJim Jagielski m_a270degRB.Check( sal_True );
3540*b1cdbd2cSJim Jagielski else
3541*b1cdbd2cSJim Jagielski {
3542*b1cdbd2cSJim Jagielski DBG_ASSERT( 0 == rItem.GetValue(), "incorrect value" );
3543*b1cdbd2cSJim Jagielski m_a0degRB.Check( sal_True );
3544*b1cdbd2cSJim Jagielski }
3545*b1cdbd2cSJim Jagielski m_aFitToLineCB.Check( rItem.IsFitToLine() );
3546*b1cdbd2cSJim Jagielski }
3547*b1cdbd2cSJim Jagielski else
3548*b1cdbd2cSJim Jagielski {
3549*b1cdbd2cSJim Jagielski if( eState == SFX_ITEM_DONTCARE )
3550*b1cdbd2cSJim Jagielski {
3551*b1cdbd2cSJim Jagielski m_a0degRB.Check( sal_False );
3552*b1cdbd2cSJim Jagielski m_a90degRB.Check( sal_False );
3553*b1cdbd2cSJim Jagielski m_a270degRB.Check( sal_False );
3554*b1cdbd2cSJim Jagielski }
3555*b1cdbd2cSJim Jagielski else
3556*b1cdbd2cSJim Jagielski m_a0degRB.Check( sal_True );
3557*b1cdbd2cSJim Jagielski
3558*b1cdbd2cSJim Jagielski m_aFitToLineCB.Check( sal_False );
3559*b1cdbd2cSJim Jagielski }
3560*b1cdbd2cSJim Jagielski m_aFitToLineCB.SetClickHdl( aOldLink );
3561*b1cdbd2cSJim Jagielski m_aFitToLineCB.Enable( !m_a0degRB.IsChecked() );
3562*b1cdbd2cSJim Jagielski
3563*b1cdbd2cSJim Jagielski // is this value set?
3564*b1cdbd2cSJim Jagielski if( SFX_ITEM_UNKNOWN == rSet.GetItemState( GetWhich(
3565*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_WIDTH_FIT_TO_LINE ) ))
3566*b1cdbd2cSJim Jagielski m_aFitToLineCB.Hide();
3567*b1cdbd2cSJim Jagielski }
3568*b1cdbd2cSJim Jagielski
3569*b1cdbd2cSJim Jagielski m_aHighPosBtn.SaveValue();
3570*b1cdbd2cSJim Jagielski m_aNormalPosBtn.SaveValue();
3571*b1cdbd2cSJim Jagielski m_aLowPosBtn.SaveValue();
3572*b1cdbd2cSJim Jagielski m_a0degRB.SaveValue();
3573*b1cdbd2cSJim Jagielski m_a90degRB.SaveValue();
3574*b1cdbd2cSJim Jagielski m_a270degRB.SaveValue();
3575*b1cdbd2cSJim Jagielski m_aFitToLineCB.SaveValue();
3576*b1cdbd2cSJim Jagielski m_aScaleWidthMF.SaveValue();
3577*b1cdbd2cSJim Jagielski m_aKerningLB.SaveValue();
3578*b1cdbd2cSJim Jagielski m_aKerningEdit.SaveValue();
3579*b1cdbd2cSJim Jagielski m_aPairKerningBtn.SaveValue();
3580*b1cdbd2cSJim Jagielski }
3581*b1cdbd2cSJim Jagielski
3582*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3583*b1cdbd2cSJim Jagielski
FillItemSet(SfxItemSet & rSet)3584*b1cdbd2cSJim Jagielski sal_Bool SvxCharPositionPage::FillItemSet( SfxItemSet& rSet )
3585*b1cdbd2cSJim Jagielski {
3586*b1cdbd2cSJim Jagielski // Position (hoch, normal oder tief)
3587*b1cdbd2cSJim Jagielski const SfxItemSet& rOldSet = GetItemSet();
3588*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False, bChanged = sal_True;
3589*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT );
3590*b1cdbd2cSJim Jagielski const SfxPoolItem* pOld = GetOldItem( rSet, SID_ATTR_CHAR_ESCAPEMENT );
3591*b1cdbd2cSJim Jagielski const FASTBOOL bHigh = m_aHighPosBtn.IsChecked();
3592*b1cdbd2cSJim Jagielski short nEsc;
3593*b1cdbd2cSJim Jagielski sal_uInt8 nEscProp;
3594*b1cdbd2cSJim Jagielski
3595*b1cdbd2cSJim Jagielski if ( bHigh || m_aLowPosBtn.IsChecked() )
3596*b1cdbd2cSJim Jagielski {
3597*b1cdbd2cSJim Jagielski if ( m_aHighLowRB.IsChecked() )
3598*b1cdbd2cSJim Jagielski nEsc = bHigh ? DFLT_ESC_AUTO_SUPER : DFLT_ESC_AUTO_SUB;
3599*b1cdbd2cSJim Jagielski else
3600*b1cdbd2cSJim Jagielski {
3601*b1cdbd2cSJim Jagielski nEsc = (short)m_aHighLowEdit.Denormalize( m_aHighLowEdit.GetValue() );
3602*b1cdbd2cSJim Jagielski nEsc *= bHigh ? 1 : -1;
3603*b1cdbd2cSJim Jagielski }
3604*b1cdbd2cSJim Jagielski nEscProp = (sal_uInt8)m_aFontSizeEdit.Denormalize( m_aFontSizeEdit.GetValue() );
3605*b1cdbd2cSJim Jagielski }
3606*b1cdbd2cSJim Jagielski else
3607*b1cdbd2cSJim Jagielski {
3608*b1cdbd2cSJim Jagielski nEsc = 0;
3609*b1cdbd2cSJim Jagielski nEscProp = 100;
3610*b1cdbd2cSJim Jagielski }
3611*b1cdbd2cSJim Jagielski
3612*b1cdbd2cSJim Jagielski if ( pOld )
3613*b1cdbd2cSJim Jagielski {
3614*b1cdbd2cSJim Jagielski const SvxEscapementItem& rItem = *( (const SvxEscapementItem*)pOld );
3615*b1cdbd2cSJim Jagielski if ( rItem.GetEsc() == nEsc && rItem.GetProp() == nEscProp )
3616*b1cdbd2cSJim Jagielski bChanged = sal_False;
3617*b1cdbd2cSJim Jagielski }
3618*b1cdbd2cSJim Jagielski
3619*b1cdbd2cSJim Jagielski if ( !bChanged && !m_aHighPosBtn.GetSavedValue() &&
3620*b1cdbd2cSJim Jagielski !m_aNormalPosBtn.GetSavedValue() && !m_aLowPosBtn.GetSavedValue() )
3621*b1cdbd2cSJim Jagielski bChanged = sal_True;
3622*b1cdbd2cSJim Jagielski
3623*b1cdbd2cSJim Jagielski if ( bChanged &&
3624*b1cdbd2cSJim Jagielski ( m_aHighPosBtn.IsChecked() || m_aNormalPosBtn.IsChecked() || m_aLowPosBtn.IsChecked() ) )
3625*b1cdbd2cSJim Jagielski {
3626*b1cdbd2cSJim Jagielski rSet.Put( SvxEscapementItem( nEsc, nEscProp, nWhich ) );
3627*b1cdbd2cSJim Jagielski bModified = sal_True;
3628*b1cdbd2cSJim Jagielski }
3629*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
3630*b1cdbd2cSJim Jagielski CLEARTITEM;
3631*b1cdbd2cSJim Jagielski
3632*b1cdbd2cSJim Jagielski bChanged = sal_True;
3633*b1cdbd2cSJim Jagielski
3634*b1cdbd2cSJim Jagielski // Kerning
3635*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_KERNING );
3636*b1cdbd2cSJim Jagielski pOld = GetOldItem( rSet, SID_ATTR_CHAR_KERNING );
3637*b1cdbd2cSJim Jagielski sal_uInt16 nPos = m_aKerningLB.GetSelectEntryPos();
3638*b1cdbd2cSJim Jagielski short nKerning = 0;
3639*b1cdbd2cSJim Jagielski SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich );
3640*b1cdbd2cSJim Jagielski
3641*b1cdbd2cSJim Jagielski if ( nPos == LW_GESPERRT || nPos == LW_SCHMAL )
3642*b1cdbd2cSJim Jagielski {
3643*b1cdbd2cSJim Jagielski long nTmp = static_cast<long>(m_aKerningEdit.GetValue());
3644*b1cdbd2cSJim Jagielski long nVal = LogicToLogic( nTmp, MAP_POINT, (MapUnit)eUnit );
3645*b1cdbd2cSJim Jagielski nKerning = (short)m_aKerningEdit.Denormalize( nVal );
3646*b1cdbd2cSJim Jagielski
3647*b1cdbd2cSJim Jagielski if ( nPos == LW_SCHMAL )
3648*b1cdbd2cSJim Jagielski nKerning *= - 1;
3649*b1cdbd2cSJim Jagielski }
3650*b1cdbd2cSJim Jagielski
3651*b1cdbd2cSJim Jagielski if ( pOld )
3652*b1cdbd2cSJim Jagielski {
3653*b1cdbd2cSJim Jagielski const SvxKerningItem& rItem = *( (const SvxKerningItem*)pOld );
3654*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == nKerning )
3655*b1cdbd2cSJim Jagielski bChanged = sal_False;
3656*b1cdbd2cSJim Jagielski }
3657*b1cdbd2cSJim Jagielski
3658*b1cdbd2cSJim Jagielski if ( !bChanged &&
3659*b1cdbd2cSJim Jagielski ( m_aKerningLB.GetSavedValue() == LISTBOX_ENTRY_NOTFOUND ||
3660*b1cdbd2cSJim Jagielski ( !m_aKerningEdit.GetSavedValue().Len() && m_aKerningEdit.IsEnabled() ) ) )
3661*b1cdbd2cSJim Jagielski bChanged = sal_True;
3662*b1cdbd2cSJim Jagielski
3663*b1cdbd2cSJim Jagielski if ( bChanged && nPos != LISTBOX_ENTRY_NOTFOUND )
3664*b1cdbd2cSJim Jagielski {
3665*b1cdbd2cSJim Jagielski rSet.Put( SvxKerningItem( nKerning, nWhich ) );
3666*b1cdbd2cSJim Jagielski bModified |= sal_True;
3667*b1cdbd2cSJim Jagielski }
3668*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
3669*b1cdbd2cSJim Jagielski CLEARTITEM;
3670*b1cdbd2cSJim Jagielski
3671*b1cdbd2cSJim Jagielski bChanged = sal_True;
3672*b1cdbd2cSJim Jagielski
3673*b1cdbd2cSJim Jagielski // Pair-Kerning
3674*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_AUTOKERN );
3675*b1cdbd2cSJim Jagielski
3676*b1cdbd2cSJim Jagielski if ( m_aPairKerningBtn.IsChecked() != m_aPairKerningBtn.GetSavedValue() )
3677*b1cdbd2cSJim Jagielski {
3678*b1cdbd2cSJim Jagielski rSet.Put( SvxAutoKernItem( m_aPairKerningBtn.IsChecked(), nWhich ) );
3679*b1cdbd2cSJim Jagielski bModified |= sal_True;
3680*b1cdbd2cSJim Jagielski }
3681*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
3682*b1cdbd2cSJim Jagielski CLEARTITEM;
3683*b1cdbd2cSJim Jagielski
3684*b1cdbd2cSJim Jagielski // Scale Width
3685*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_SCALEWIDTH );
3686*b1cdbd2cSJim Jagielski if ( m_aScaleWidthMF.GetText() != m_aScaleWidthMF.GetSavedValue() )
3687*b1cdbd2cSJim Jagielski {
3688*b1cdbd2cSJim Jagielski rSet.Put( SvxCharScaleWidthItem( (sal_uInt16)m_aScaleWidthMF.GetValue(), nWhich ) );
3689*b1cdbd2cSJim Jagielski bModified |= sal_True;
3690*b1cdbd2cSJim Jagielski }
3691*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
3692*b1cdbd2cSJim Jagielski CLEARTITEM;
3693*b1cdbd2cSJim Jagielski
3694*b1cdbd2cSJim Jagielski // Rotation
3695*b1cdbd2cSJim Jagielski nWhich = GetWhich( SID_ATTR_CHAR_ROTATED );
3696*b1cdbd2cSJim Jagielski if ( m_a0degRB .IsChecked() != m_a0degRB .GetSavedValue() ||
3697*b1cdbd2cSJim Jagielski m_a90degRB .IsChecked() != m_a90degRB .GetSavedValue() ||
3698*b1cdbd2cSJim Jagielski m_a270degRB .IsChecked() != m_a270degRB .GetSavedValue() ||
3699*b1cdbd2cSJim Jagielski m_aFitToLineCB.IsChecked() != m_aFitToLineCB.GetSavedValue() )
3700*b1cdbd2cSJim Jagielski {
3701*b1cdbd2cSJim Jagielski SvxCharRotateItem aItem( 0, m_aFitToLineCB.IsChecked(), nWhich );
3702*b1cdbd2cSJim Jagielski if (m_a90degRB.IsChecked())
3703*b1cdbd2cSJim Jagielski aItem.SetBottomToTop();
3704*b1cdbd2cSJim Jagielski else if (m_a270degRB.IsChecked())
3705*b1cdbd2cSJim Jagielski aItem.SetTopToBotton();
3706*b1cdbd2cSJim Jagielski rSet.Put( aItem );
3707*b1cdbd2cSJim Jagielski bModified |= sal_True;
3708*b1cdbd2cSJim Jagielski }
3709*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
3710*b1cdbd2cSJim Jagielski CLEARTITEM;
3711*b1cdbd2cSJim Jagielski
3712*b1cdbd2cSJim Jagielski return bModified;
3713*b1cdbd2cSJim Jagielski }
3714*b1cdbd2cSJim Jagielski
3715*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3716*b1cdbd2cSJim Jagielski
FillUserData()3717*b1cdbd2cSJim Jagielski void SvxCharPositionPage::FillUserData()
3718*b1cdbd2cSJim Jagielski {
3719*b1cdbd2cSJim Jagielski const sal_Unicode cTok = ';';
3720*b1cdbd2cSJim Jagielski
3721*b1cdbd2cSJim Jagielski String sUser( UniString::CreateFromInt32( m_nSuperEsc ) );
3722*b1cdbd2cSJim Jagielski sUser.Append( cTok );
3723*b1cdbd2cSJim Jagielski sUser.Append( UniString::CreateFromInt32( m_nSubEsc ) );
3724*b1cdbd2cSJim Jagielski sUser.Append( cTok );
3725*b1cdbd2cSJim Jagielski sUser.Append( UniString::CreateFromInt32( m_nSuperProp ) );
3726*b1cdbd2cSJim Jagielski sUser.Append( cTok );
3727*b1cdbd2cSJim Jagielski sUser.Append( UniString::CreateFromInt32( m_nSubProp ) );
3728*b1cdbd2cSJim Jagielski SetUserData( sUser );
3729*b1cdbd2cSJim Jagielski }
3730*b1cdbd2cSJim Jagielski
3731*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
SetPreviewBackgroundToCharacter()3732*b1cdbd2cSJim Jagielski void SvxCharPositionPage::SetPreviewBackgroundToCharacter()
3733*b1cdbd2cSJim Jagielski {
3734*b1cdbd2cSJim Jagielski m_bPreviewBackgroundToCharacter = sal_True;
3735*b1cdbd2cSJim Jagielski }
3736*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
PageCreated(SfxAllItemSet aSet)3737*b1cdbd2cSJim Jagielski void SvxCharPositionPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
3738*b1cdbd2cSJim Jagielski {
3739*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_FLAG_TYPE,sal_False);
3740*b1cdbd2cSJim Jagielski if (pFlagItem)
3741*b1cdbd2cSJim Jagielski {
3742*b1cdbd2cSJim Jagielski sal_uInt32 nFlags=pFlagItem->GetValue();
3743*b1cdbd2cSJim Jagielski if ( ( nFlags & SVX_PREVIEW_CHARACTER ) == SVX_PREVIEW_CHARACTER )
3744*b1cdbd2cSJim Jagielski SetPreviewBackgroundToCharacter();
3745*b1cdbd2cSJim Jagielski }
3746*b1cdbd2cSJim Jagielski }
3747*b1cdbd2cSJim Jagielski // class SvxCharTwoLinesPage ------------------------------------------------
3748*b1cdbd2cSJim Jagielski
SvxCharTwoLinesPage(Window * pParent,const SfxItemSet & rInSet)3749*b1cdbd2cSJim Jagielski SvxCharTwoLinesPage::SvxCharTwoLinesPage( Window* pParent, const SfxItemSet& rInSet ) :
3750*b1cdbd2cSJim Jagielski
3751*b1cdbd2cSJim Jagielski SvxCharBasePage( pParent, CUI_RES( RID_SVXPAGE_CHAR_TWOLINES ), rInSet, WIN_TWOLINES_PREVIEW, FT_TWOLINES_FONTTYPE ),
3752*b1cdbd2cSJim Jagielski
3753*b1cdbd2cSJim Jagielski m_aSwitchOnLine ( this, CUI_RES( FL_SWITCHON ) ),
3754*b1cdbd2cSJim Jagielski m_aTwoLinesBtn ( this, CUI_RES( CB_TWOLINES ) ),
3755*b1cdbd2cSJim Jagielski
3756*b1cdbd2cSJim Jagielski m_aEncloseLine ( this, CUI_RES( FL_ENCLOSE ) ),
3757*b1cdbd2cSJim Jagielski m_aStartBracketFT ( this, CUI_RES( FT_STARTBRACKET ) ),
3758*b1cdbd2cSJim Jagielski m_aStartBracketLB ( this, CUI_RES( ED_STARTBRACKET ) ),
3759*b1cdbd2cSJim Jagielski m_aEndBracketFT ( this, CUI_RES( FT_ENDBRACKET ) ),
3760*b1cdbd2cSJim Jagielski m_aEndBracketLB ( this, CUI_RES( ED_ENDBRACKET ) ),
3761*b1cdbd2cSJim Jagielski m_nStartBracketPosition( 0 ),
3762*b1cdbd2cSJim Jagielski m_nEndBracketPosition( 0 )
3763*b1cdbd2cSJim Jagielski {
3764*b1cdbd2cSJim Jagielski FreeResource();
3765*b1cdbd2cSJim Jagielski Initialize();
3766*b1cdbd2cSJim Jagielski }
3767*b1cdbd2cSJim Jagielski
3768*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3769*b1cdbd2cSJim Jagielski
Initialize()3770*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::Initialize()
3771*b1cdbd2cSJim Jagielski {
3772*b1cdbd2cSJim Jagielski Size aSize = m_aStartBracketLB.GetSizePixel();
3773*b1cdbd2cSJim Jagielski aSize.Height() = m_aStartBracketLB.CalcSize( 1, 6 ).Height();
3774*b1cdbd2cSJim Jagielski m_aStartBracketLB.SetSizePixel( aSize );
3775*b1cdbd2cSJim Jagielski aSize = m_aEndBracketLB.GetSizePixel();
3776*b1cdbd2cSJim Jagielski aSize.Height() = m_aEndBracketLB.CalcSize( 1, 6 ).Height();
3777*b1cdbd2cSJim Jagielski m_aEndBracketLB.SetSizePixel( aSize );
3778*b1cdbd2cSJim Jagielski
3779*b1cdbd2cSJim Jagielski m_aTwoLinesBtn.Check( sal_False );
3780*b1cdbd2cSJim Jagielski TwoLinesHdl_Impl( NULL );
3781*b1cdbd2cSJim Jagielski
3782*b1cdbd2cSJim Jagielski m_aTwoLinesBtn.SetClickHdl( LINK( this, SvxCharTwoLinesPage, TwoLinesHdl_Impl ) );
3783*b1cdbd2cSJim Jagielski
3784*b1cdbd2cSJim Jagielski Link aLink = LINK( this, SvxCharTwoLinesPage, CharacterMapHdl_Impl );
3785*b1cdbd2cSJim Jagielski m_aStartBracketLB.SetSelectHdl( aLink );
3786*b1cdbd2cSJim Jagielski m_aEndBracketLB.SetSelectHdl( aLink );
3787*b1cdbd2cSJim Jagielski
3788*b1cdbd2cSJim Jagielski SvxFont& rFont = GetPreviewFont();
3789*b1cdbd2cSJim Jagielski SvxFont& rCJKFont = GetPreviewCJKFont();
3790*b1cdbd2cSJim Jagielski SvxFont& rCTLFont = GetPreviewCTLFont();
3791*b1cdbd2cSJim Jagielski rFont.SetSize( Size( 0, 220 ) );
3792*b1cdbd2cSJim Jagielski rCJKFont.SetSize( Size( 0, 220 ) );
3793*b1cdbd2cSJim Jagielski rCTLFont.SetSize( Size( 0, 220 ) );
3794*b1cdbd2cSJim Jagielski }
3795*b1cdbd2cSJim Jagielski
3796*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3797*b1cdbd2cSJim Jagielski
SelectCharacter(ListBox * pBox)3798*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::SelectCharacter( ListBox* pBox )
3799*b1cdbd2cSJim Jagielski {
3800*b1cdbd2cSJim Jagielski //CHINA001 SvxCharacterMap aDlg( this );
3801*b1cdbd2cSJim Jagielski bool bStart = pBox == &m_aStartBracketLB;
3802*b1cdbd2cSJim Jagielski //SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
3803*b1cdbd2cSJim Jagielski //if(pFact)
3804*b1cdbd2cSJim Jagielski {
3805*b1cdbd2cSJim Jagielski //AbstractSvxCharacterMap* aDlg = pFact->CreateSvxCharacterMap( this, RID_SVXDLG_CHARMAP );
3806*b1cdbd2cSJim Jagielski SvxCharacterMap* aDlg = new SvxCharacterMap( this );
3807*b1cdbd2cSJim Jagielski aDlg->DisableFontSelection();//CHINA001 aDlg.DisableFontSelection();
3808*b1cdbd2cSJim Jagielski
3809*b1cdbd2cSJim Jagielski if ( aDlg->Execute() == RET_OK )//CHINA001 ( aDlg.Execute() == RET_OK )
3810*b1cdbd2cSJim Jagielski {
3811*b1cdbd2cSJim Jagielski sal_Unicode cChar = (sal_Unicode) aDlg->GetChar();//CHINA001 aDlg.GetChar();
3812*b1cdbd2cSJim Jagielski SetBracket( cChar, bStart );
3813*b1cdbd2cSJim Jagielski }
3814*b1cdbd2cSJim Jagielski else
3815*b1cdbd2cSJim Jagielski {
3816*b1cdbd2cSJim Jagielski pBox->SelectEntryPos( bStart ? m_nStartBracketPosition : m_nEndBracketPosition );
3817*b1cdbd2cSJim Jagielski }
3818*b1cdbd2cSJim Jagielski delete aDlg; //add CHINA001
3819*b1cdbd2cSJim Jagielski }
3820*b1cdbd2cSJim Jagielski }
3821*b1cdbd2cSJim Jagielski
3822*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3823*b1cdbd2cSJim Jagielski
SetBracket(sal_Unicode cBracket,sal_Bool bStart)3824*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::SetBracket( sal_Unicode cBracket, sal_Bool bStart )
3825*b1cdbd2cSJim Jagielski {
3826*b1cdbd2cSJim Jagielski sal_uInt16 nEntryPos = 0;
3827*b1cdbd2cSJim Jagielski ListBox* pBox = bStart ? &m_aStartBracketLB : &m_aEndBracketLB;
3828*b1cdbd2cSJim Jagielski if ( 0 == cBracket )
3829*b1cdbd2cSJim Jagielski pBox->SelectEntryPos(0);
3830*b1cdbd2cSJim Jagielski else
3831*b1cdbd2cSJim Jagielski {
3832*b1cdbd2cSJim Jagielski FASTBOOL bFound = sal_False;
3833*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 1; i < pBox->GetEntryCount(); ++i )
3834*b1cdbd2cSJim Jagielski {
3835*b1cdbd2cSJim Jagielski if ( (sal_uLong)pBox->GetEntryData(i) != CHRDLG_ENCLOSE_SPECIAL_CHAR )
3836*b1cdbd2cSJim Jagielski {
3837*b1cdbd2cSJim Jagielski const sal_Unicode cChar = pBox->GetEntry(i).GetChar(0);
3838*b1cdbd2cSJim Jagielski if ( cChar == cBracket )
3839*b1cdbd2cSJim Jagielski {
3840*b1cdbd2cSJim Jagielski pBox->SelectEntryPos(i);
3841*b1cdbd2cSJim Jagielski nEntryPos = i;
3842*b1cdbd2cSJim Jagielski bFound = sal_True;
3843*b1cdbd2cSJim Jagielski break;
3844*b1cdbd2cSJim Jagielski }
3845*b1cdbd2cSJim Jagielski }
3846*b1cdbd2cSJim Jagielski }
3847*b1cdbd2cSJim Jagielski
3848*b1cdbd2cSJim Jagielski if ( !bFound )
3849*b1cdbd2cSJim Jagielski {
3850*b1cdbd2cSJim Jagielski nEntryPos = pBox->InsertEntry( String( cBracket ) );
3851*b1cdbd2cSJim Jagielski pBox->SelectEntryPos( nEntryPos );
3852*b1cdbd2cSJim Jagielski }
3853*b1cdbd2cSJim Jagielski }
3854*b1cdbd2cSJim Jagielski if( bStart )
3855*b1cdbd2cSJim Jagielski m_nStartBracketPosition = nEntryPos;
3856*b1cdbd2cSJim Jagielski else
3857*b1cdbd2cSJim Jagielski m_nEndBracketPosition = nEntryPos;
3858*b1cdbd2cSJim Jagielski }
3859*b1cdbd2cSJim Jagielski
3860*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3861*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharTwoLinesPage,TwoLinesHdl_Impl,CheckBox *,EMPTYARG)3862*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharTwoLinesPage, TwoLinesHdl_Impl, CheckBox*, EMPTYARG )
3863*b1cdbd2cSJim Jagielski {
3864*b1cdbd2cSJim Jagielski sal_Bool bChecked = m_aTwoLinesBtn.IsChecked();
3865*b1cdbd2cSJim Jagielski m_aStartBracketFT.Enable( bChecked );
3866*b1cdbd2cSJim Jagielski m_aStartBracketLB.Enable( bChecked );
3867*b1cdbd2cSJim Jagielski m_aEndBracketFT.Enable( bChecked );
3868*b1cdbd2cSJim Jagielski m_aEndBracketLB.Enable( bChecked );
3869*b1cdbd2cSJim Jagielski
3870*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
3871*b1cdbd2cSJim Jagielski return 0;
3872*b1cdbd2cSJim Jagielski }
3873*b1cdbd2cSJim Jagielski
3874*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3875*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxCharTwoLinesPage,CharacterMapHdl_Impl,ListBox *,pBox)3876*b1cdbd2cSJim Jagielski IMPL_LINK( SvxCharTwoLinesPage, CharacterMapHdl_Impl, ListBox*, pBox )
3877*b1cdbd2cSJim Jagielski {
3878*b1cdbd2cSJim Jagielski sal_uInt16 nPos = pBox->GetSelectEntryPos();
3879*b1cdbd2cSJim Jagielski if ( CHRDLG_ENCLOSE_SPECIAL_CHAR == (sal_uLong)pBox->GetEntryData( nPos ) )
3880*b1cdbd2cSJim Jagielski SelectCharacter( pBox );
3881*b1cdbd2cSJim Jagielski else
3882*b1cdbd2cSJim Jagielski {
3883*b1cdbd2cSJim Jagielski bool bStart = pBox == &m_aStartBracketLB;
3884*b1cdbd2cSJim Jagielski if( bStart )
3885*b1cdbd2cSJim Jagielski m_nStartBracketPosition = nPos;
3886*b1cdbd2cSJim Jagielski else
3887*b1cdbd2cSJim Jagielski m_nEndBracketPosition = nPos;
3888*b1cdbd2cSJim Jagielski }
3889*b1cdbd2cSJim Jagielski UpdatePreview_Impl();
3890*b1cdbd2cSJim Jagielski return 0;
3891*b1cdbd2cSJim Jagielski }
3892*b1cdbd2cSJim Jagielski
3893*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3894*b1cdbd2cSJim Jagielski
ActivatePage(const SfxItemSet & rSet)3895*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::ActivatePage( const SfxItemSet& rSet )
3896*b1cdbd2cSJim Jagielski {
3897*b1cdbd2cSJim Jagielski SvxCharBasePage::ActivatePage( rSet );
3898*b1cdbd2cSJim Jagielski }
3899*b1cdbd2cSJim Jagielski
3900*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3901*b1cdbd2cSJim Jagielski
DeactivatePage(SfxItemSet * _pSet)3902*b1cdbd2cSJim Jagielski int SvxCharTwoLinesPage::DeactivatePage( SfxItemSet* _pSet )
3903*b1cdbd2cSJim Jagielski {
3904*b1cdbd2cSJim Jagielski if ( _pSet )
3905*b1cdbd2cSJim Jagielski FillItemSet( *_pSet );
3906*b1cdbd2cSJim Jagielski return LEAVE_PAGE;
3907*b1cdbd2cSJim Jagielski }
3908*b1cdbd2cSJim Jagielski
3909*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3910*b1cdbd2cSJim Jagielski
Create(Window * pParent,const SfxItemSet & rSet)3911*b1cdbd2cSJim Jagielski SfxTabPage* SvxCharTwoLinesPage::Create( Window* pParent, const SfxItemSet& rSet )
3912*b1cdbd2cSJim Jagielski {
3913*b1cdbd2cSJim Jagielski return new SvxCharTwoLinesPage( pParent, rSet );
3914*b1cdbd2cSJim Jagielski }
3915*b1cdbd2cSJim Jagielski
3916*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3917*b1cdbd2cSJim Jagielski
GetRanges()3918*b1cdbd2cSJim Jagielski sal_uInt16* SvxCharTwoLinesPage::GetRanges()
3919*b1cdbd2cSJim Jagielski {
3920*b1cdbd2cSJim Jagielski return pTwoLinesRanges;
3921*b1cdbd2cSJim Jagielski }
3922*b1cdbd2cSJim Jagielski
3923*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3924*b1cdbd2cSJim Jagielski
Reset(const SfxItemSet & rSet)3925*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::Reset( const SfxItemSet& rSet )
3926*b1cdbd2cSJim Jagielski {
3927*b1cdbd2cSJim Jagielski m_aTwoLinesBtn.Check( sal_False );
3928*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_TWO_LINES );
3929*b1cdbd2cSJim Jagielski SfxItemState eState = rSet.GetItemState( nWhich );
3930*b1cdbd2cSJim Jagielski
3931*b1cdbd2cSJim Jagielski if ( eState >= SFX_ITEM_DONTCARE )
3932*b1cdbd2cSJim Jagielski {
3933*b1cdbd2cSJim Jagielski const SvxTwoLinesItem& rItem = (SvxTwoLinesItem&)rSet.Get( nWhich );
3934*b1cdbd2cSJim Jagielski m_aTwoLinesBtn.Check( rItem.GetValue() );
3935*b1cdbd2cSJim Jagielski
3936*b1cdbd2cSJim Jagielski if ( rItem.GetValue() )
3937*b1cdbd2cSJim Jagielski {
3938*b1cdbd2cSJim Jagielski SetBracket( rItem.GetStartBracket(), sal_True );
3939*b1cdbd2cSJim Jagielski SetBracket( rItem.GetEndBracket(), sal_False );
3940*b1cdbd2cSJim Jagielski }
3941*b1cdbd2cSJim Jagielski }
3942*b1cdbd2cSJim Jagielski TwoLinesHdl_Impl( NULL );
3943*b1cdbd2cSJim Jagielski
3944*b1cdbd2cSJim Jagielski SetPrevFontWidthScale( rSet );
3945*b1cdbd2cSJim Jagielski }
3946*b1cdbd2cSJim Jagielski
3947*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
3948*b1cdbd2cSJim Jagielski
FillItemSet(SfxItemSet & rSet)3949*b1cdbd2cSJim Jagielski sal_Bool SvxCharTwoLinesPage::FillItemSet( SfxItemSet& rSet )
3950*b1cdbd2cSJim Jagielski {
3951*b1cdbd2cSJim Jagielski const SfxItemSet& rOldSet = GetItemSet();
3952*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False, bChanged = sal_True;
3953*b1cdbd2cSJim Jagielski sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_TWO_LINES );
3954*b1cdbd2cSJim Jagielski const SfxPoolItem* pOld = GetOldItem( rSet, SID_ATTR_CHAR_TWO_LINES );
3955*b1cdbd2cSJim Jagielski sal_Bool bOn = m_aTwoLinesBtn.IsChecked();
3956*b1cdbd2cSJim Jagielski sal_Unicode cStart = ( bOn && m_aStartBracketLB.GetSelectEntryPos() > 0 )
3957*b1cdbd2cSJim Jagielski ? m_aStartBracketLB.GetSelectEntry().GetChar(0) : 0;
3958*b1cdbd2cSJim Jagielski sal_Unicode cEnd = ( bOn && m_aEndBracketLB.GetSelectEntryPos() > 0 )
3959*b1cdbd2cSJim Jagielski ? m_aEndBracketLB.GetSelectEntry().GetChar(0) : 0;
3960*b1cdbd2cSJim Jagielski
3961*b1cdbd2cSJim Jagielski if ( pOld )
3962*b1cdbd2cSJim Jagielski {
3963*b1cdbd2cSJim Jagielski const SvxTwoLinesItem& rItem = *( (const SvxTwoLinesItem*)pOld );
3964*b1cdbd2cSJim Jagielski if ( rItem.GetValue() == bOn &&
3965*b1cdbd2cSJim Jagielski ( !bOn || ( rItem.GetStartBracket() == cStart && rItem.GetEndBracket() == cEnd ) ) )
3966*b1cdbd2cSJim Jagielski bChanged = sal_False;
3967*b1cdbd2cSJim Jagielski }
3968*b1cdbd2cSJim Jagielski
3969*b1cdbd2cSJim Jagielski if ( bChanged )
3970*b1cdbd2cSJim Jagielski {
3971*b1cdbd2cSJim Jagielski rSet.Put( SvxTwoLinesItem( bOn, cStart, cEnd, nWhich ) );
3972*b1cdbd2cSJim Jagielski bModified |= sal_True;
3973*b1cdbd2cSJim Jagielski }
3974*b1cdbd2cSJim Jagielski else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
3975*b1cdbd2cSJim Jagielski CLEARTITEM;
3976*b1cdbd2cSJim Jagielski
3977*b1cdbd2cSJim Jagielski return bModified;
3978*b1cdbd2cSJim Jagielski }
3979*b1cdbd2cSJim Jagielski /* -----------------------------04.12.00 09:48--------------------------------
3980*b1cdbd2cSJim Jagielski
3981*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
UpdatePreview_Impl()3982*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::UpdatePreview_Impl()
3983*b1cdbd2cSJim Jagielski {
3984*b1cdbd2cSJim Jagielski sal_Unicode cStart = m_aStartBracketLB.GetSelectEntryPos() > 0
3985*b1cdbd2cSJim Jagielski ? m_aStartBracketLB.GetSelectEntry().GetChar(0) : 0;
3986*b1cdbd2cSJim Jagielski sal_Unicode cEnd = m_aEndBracketLB.GetSelectEntryPos() > 0
3987*b1cdbd2cSJim Jagielski ? m_aEndBracketLB.GetSelectEntry().GetChar(0) : 0;
3988*b1cdbd2cSJim Jagielski m_aPreviewWin.SetBrackets(cStart, cEnd);
3989*b1cdbd2cSJim Jagielski m_aPreviewWin.SetTwoLines(m_aTwoLinesBtn.IsChecked());
3990*b1cdbd2cSJim Jagielski m_aPreviewWin.Invalidate();
3991*b1cdbd2cSJim Jagielski }
3992*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
SetPreviewBackgroundToCharacter()3993*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::SetPreviewBackgroundToCharacter()
3994*b1cdbd2cSJim Jagielski {
3995*b1cdbd2cSJim Jagielski m_bPreviewBackgroundToCharacter = sal_True;
3996*b1cdbd2cSJim Jagielski }
3997*b1cdbd2cSJim Jagielski
3998*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
PageCreated(SfxAllItemSet aSet)3999*b1cdbd2cSJim Jagielski void SvxCharTwoLinesPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
4000*b1cdbd2cSJim Jagielski {
4001*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_FLAG_TYPE,sal_False);
4002*b1cdbd2cSJim Jagielski if (pFlagItem)
4003*b1cdbd2cSJim Jagielski {
4004*b1cdbd2cSJim Jagielski sal_uInt32 nFlags=pFlagItem->GetValue();
4005*b1cdbd2cSJim Jagielski if ( ( nFlags & SVX_PREVIEW_CHARACTER ) == SVX_PREVIEW_CHARACTER )
4006*b1cdbd2cSJim Jagielski SetPreviewBackgroundToCharacter();
4007*b1cdbd2cSJim Jagielski }
4008*b1cdbd2cSJim Jagielski }
4009