xref: /AOO41X/main/sw/source/ui/utlui/textcontrolcombo.cxx (revision efeef26f81c84063fb0a91bde3856d4a51172d90)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 
28 #include "textcontrolcombo.hxx"
29 
30 
TextControlCombo(Window * _pParent,const ResId & _rResId,Control & _rCtrl,FixedText & _rFTbefore,FixedText & _rFTafter)31 TextControlCombo::TextControlCombo( Window* _pParent, const ResId& _rResId,
32     Control& _rCtrl, FixedText& _rFTbefore, FixedText& _rFTafter )
33     :Window         ( _pParent, _rResId )
34     ,mrCtrl         ( _rCtrl )
35     ,mrFTbefore     ( _rFTbefore )
36     ,mrFTafter      ( _rFTafter )
37 {
38 }
39 
~TextControlCombo()40 TextControlCombo::~TextControlCombo()
41 {
42 }
43 
Arrange(FixedText & _rFTcomplete,sal_Bool)44 void TextControlCombo::Arrange( FixedText& _rFTcomplete, sal_Bool /*bShow*/ )
45 {
46     Point           aBasePos( GetPosPixel() );
47     Size            aMetricVals( GetSizePixel() );
48 
49     long            nTextHeight = _rFTcomplete.GetSizePixel().Height();
50     long            nCtrlHeight = mrCtrl.GetSizePixel().Height();
51 
52     // calc y positions / center vertical
53     long            nYFT = aBasePos.Y();
54     long            nYCtrl = nYFT;
55     if( nCtrlHeight > nTextHeight )
56         nYFT += aMetricVals.Height();
57     else
58         nYCtrl += aMetricVals.Height();
59 
60     // separate text parts
61     const String    aReplStr( RTL_CONSTASCII_STRINGPARAM( "%POSITION_OF_CONTROL" ) );
62     String          aTxtBefore( _rFTcomplete.GetText() );
63     String          aTxtAfter;
64     xub_StrLen      nReplPos = aTxtBefore.Search( aReplStr );
65     if( nReplPos != STRING_NOTFOUND )
66     {
67         xub_StrLen  nStrStartAfter = nReplPos + aReplStr.Len();
68         aTxtAfter = String( aTxtBefore, nStrStartAfter, aTxtBefore.Len() - nStrStartAfter );
69         aTxtBefore.Erase( nReplPos );
70     }
71 
72     // arrange and fill Fixed Texts
73     long            nX = aBasePos.X();
74     long            nWidth = GetTextWidth( aTxtBefore );
75 
76     mrFTbefore.SetText( aTxtBefore );
77     mrFTbefore.SetPosSizePixel( nX, nYFT, nWidth, nTextHeight );
78 
79     nX += nWidth;
80     nX += aMetricVals.Width();
81     mrCtrl.SetPosPixel( Point( nX, nYCtrl ) );
82 
83     nX += mrCtrl.GetSizePixel().Width();
84     nX += aMetricVals.Width();
85     mrFTafter.SetText( aTxtAfter );
86     mrFTafter.SetPosSizePixel( nX, nYFT, GetTextWidth( aTxtAfter ), nTextHeight );
87 
88     _rFTcomplete.Hide();
89 
90     Show();
91 
92     Window::Hide();
93 }
94 
Show(sal_Bool _bVisible,sal_uInt16 _nFlags)95 void TextControlCombo::Show( sal_Bool _bVisible, sal_uInt16 _nFlags )
96 {
97     mrCtrl.Show( _bVisible, _nFlags );
98     mrFTbefore.Show( _bVisible, _nFlags );
99     mrFTafter.Show( _bVisible, _nFlags );
100 }
101 
Enable(sal_Bool _bEnable,sal_Bool _bChild)102 void TextControlCombo::Enable( sal_Bool _bEnable, sal_Bool _bChild )
103 {
104     mrCtrl.Enable( _bEnable, _bChild );
105     mrFTbefore.Enable( _bEnable, _bChild );
106     mrFTafter.Enable( _bEnable, _bChild );
107 }
108 
109 
110