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_dbaccess.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #ifndef _DBAUI_CURLEDIT_HXX_
28*b1cdbd2cSJim Jagielski #include "curledit.hxx"
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski #ifndef _SV_SVAPP_HXX
31*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
32*b1cdbd2cSJim Jagielski #endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski //.........................................................................
35*b1cdbd2cSJim Jagielski namespace dbaui
36*b1cdbd2cSJim Jagielski {
37*b1cdbd2cSJim Jagielski //.........................................................................
DBG_NAME(OConnectionURLEdit)38*b1cdbd2cSJim Jagielski DBG_NAME(OConnectionURLEdit)
39*b1cdbd2cSJim Jagielski //=========================================================================
40*b1cdbd2cSJim Jagielski //= OConnectionURLEdit
41*b1cdbd2cSJim Jagielski //=========================================================================
42*b1cdbd2cSJim Jagielski OConnectionURLEdit::OConnectionURLEdit(Window* _pParent, const ResId& _rResId,sal_Bool _bShowPrefix)
43*b1cdbd2cSJim Jagielski :Edit(_pParent, _rResId)
44*b1cdbd2cSJim Jagielski ,m_pTypeCollection(NULL)
45*b1cdbd2cSJim Jagielski ,m_pForcedPrefix(NULL)
46*b1cdbd2cSJim Jagielski ,m_bShowPrefix(_bShowPrefix)
47*b1cdbd2cSJim Jagielski {
48*b1cdbd2cSJim Jagielski DBG_CTOR(OConnectionURLEdit ,NULL);
49*b1cdbd2cSJim Jagielski }
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
~OConnectionURLEdit()52*b1cdbd2cSJim Jagielski OConnectionURLEdit::~OConnectionURLEdit()
53*b1cdbd2cSJim Jagielski {
54*b1cdbd2cSJim Jagielski DBG_DTOR(OConnectionURLEdit ,NULL);
55*b1cdbd2cSJim Jagielski // delete my sub controls
56*b1cdbd2cSJim Jagielski Edit* pSubEdit = GetSubEdit();
57*b1cdbd2cSJim Jagielski SetSubEdit(NULL);
58*b1cdbd2cSJim Jagielski delete pSubEdit;
59*b1cdbd2cSJim Jagielski delete m_pForcedPrefix;
60*b1cdbd2cSJim Jagielski }
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
SetTextNoPrefix(const String & _rText)63*b1cdbd2cSJim Jagielski void OConnectionURLEdit::SetTextNoPrefix(const String& _rText)
64*b1cdbd2cSJim Jagielski {
65*b1cdbd2cSJim Jagielski DBG_ASSERT(GetSubEdit(), "OConnectionURLEdit::SetTextNoPrefix: have no current type, not changing the text!");
66*b1cdbd2cSJim Jagielski if (GetSubEdit())
67*b1cdbd2cSJim Jagielski GetSubEdit()->SetText(_rText);
68*b1cdbd2cSJim Jagielski }
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
GetTextNoPrefix() const71*b1cdbd2cSJim Jagielski String OConnectionURLEdit::GetTextNoPrefix() const
72*b1cdbd2cSJim Jagielski {
73*b1cdbd2cSJim Jagielski if (GetSubEdit())
74*b1cdbd2cSJim Jagielski return GetSubEdit()->GetText();
75*b1cdbd2cSJim Jagielski return GetText();
76*b1cdbd2cSJim Jagielski }
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
SetText(const String & _rStr)79*b1cdbd2cSJim Jagielski void OConnectionURLEdit::SetText(const String& _rStr)
80*b1cdbd2cSJim Jagielski {
81*b1cdbd2cSJim Jagielski Selection aNoSelection(0,0);
82*b1cdbd2cSJim Jagielski SetText(_rStr, aNoSelection);
83*b1cdbd2cSJim Jagielski }
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
SetText(const String & _rStr,const Selection &)86*b1cdbd2cSJim Jagielski void OConnectionURLEdit::SetText(const String& _rStr, const Selection& /*_rNewSelection*/)
87*b1cdbd2cSJim Jagielski {
88*b1cdbd2cSJim Jagielski // create new sub controls, if necessary
89*b1cdbd2cSJim Jagielski if (!GetSubEdit())
90*b1cdbd2cSJim Jagielski SetSubEdit(new Edit(this, 0));
91*b1cdbd2cSJim Jagielski if ( !m_pForcedPrefix )
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski m_pForcedPrefix = new FixedText(this, WB_VCENTER);
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski // we use a gray background for the fixed text
96*b1cdbd2cSJim Jagielski StyleSettings aSystemStyle = Application::GetSettings().GetStyleSettings();
97*b1cdbd2cSJim Jagielski m_pForcedPrefix->SetBackground(Wallpaper(aSystemStyle.GetDialogColor()));
98*b1cdbd2cSJim Jagielski }
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski m_pForcedPrefix->Show(m_bShowPrefix);
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski sal_Bool bIsEmpty = 0 == _rStr.Len();
103*b1cdbd2cSJim Jagielski // calc the prefix
104*b1cdbd2cSJim Jagielski String sPrefix;
105*b1cdbd2cSJim Jagielski if (!bIsEmpty)
106*b1cdbd2cSJim Jagielski {
107*b1cdbd2cSJim Jagielski // determine the type of the new URL described by the new text
108*b1cdbd2cSJim Jagielski sPrefix = m_pTypeCollection->getPrefix(_rStr);
109*b1cdbd2cSJim Jagielski }
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski // the fixed text gets the prefix
112*b1cdbd2cSJim Jagielski if ( m_pForcedPrefix )
113*b1cdbd2cSJim Jagielski m_pForcedPrefix->SetText(sPrefix);
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski // both subs have to be resized according to the text len of the prefix
116*b1cdbd2cSJim Jagielski Size aMySize = GetSizePixel();
117*b1cdbd2cSJim Jagielski sal_Int32 nTextWidth = 0;
118*b1cdbd2cSJim Jagielski if ( m_pForcedPrefix && m_bShowPrefix)
119*b1cdbd2cSJim Jagielski {
120*b1cdbd2cSJim Jagielski nTextWidth = m_pForcedPrefix->GetTextWidth(sPrefix) + 2;
121*b1cdbd2cSJim Jagielski m_pForcedPrefix->SetPosSizePixel(Point(0, -2), Size(nTextWidth, aMySize.Height()));
122*b1cdbd2cSJim Jagielski }
123*b1cdbd2cSJim Jagielski GetSubEdit()->SetPosSizePixel(Point(nTextWidth, -2), Size(aMySize.Width() - nTextWidth - 4, aMySize.Height()));
124*b1cdbd2cSJim Jagielski // -2 because the edit has a frame which is 2 pixel wide ... should not be necessary, but I don't fully understand this ....
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski // show the sub controls (in case they were just created)
127*b1cdbd2cSJim Jagielski GetSubEdit()->Show();
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski // do the real SetTex
130*b1cdbd2cSJim Jagielski // Edit::SetText(bIsEmpty ? _rStr : m_pTypeCollection->cutPrefix(_rStr), _rNewSelection);
131*b1cdbd2cSJim Jagielski String sNewText( _rStr );
132*b1cdbd2cSJim Jagielski if ( !bIsEmpty )
133*b1cdbd2cSJim Jagielski sNewText = m_pTypeCollection->cutPrefix( _rStr );
134*b1cdbd2cSJim Jagielski Edit::SetText( sNewText );
135*b1cdbd2cSJim Jagielski }
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
GetText() const138*b1cdbd2cSJim Jagielski String OConnectionURLEdit::GetText() const
139*b1cdbd2cSJim Jagielski {
140*b1cdbd2cSJim Jagielski if ( m_pForcedPrefix )
141*b1cdbd2cSJim Jagielski return m_pForcedPrefix->GetText() += Edit::GetText();
142*b1cdbd2cSJim Jagielski return Edit::GetText();
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
ShowPrefix(sal_Bool _bShowPrefix)145*b1cdbd2cSJim Jagielski void OConnectionURLEdit::ShowPrefix(sal_Bool _bShowPrefix)
146*b1cdbd2cSJim Jagielski {
147*b1cdbd2cSJim Jagielski m_bShowPrefix = _bShowPrefix;
148*b1cdbd2cSJim Jagielski if ( m_pForcedPrefix )
149*b1cdbd2cSJim Jagielski m_pForcedPrefix->Show(m_bShowPrefix);
150*b1cdbd2cSJim Jagielski }
151*b1cdbd2cSJim Jagielski //.........................................................................
152*b1cdbd2cSJim Jagielski } // namespace dbaui
153*b1cdbd2cSJim Jagielski //.........................................................................
154*b1cdbd2cSJim Jagielski
155