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