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 #include "admincontrols.hxx"
28*b1cdbd2cSJim Jagielski #include "admincontrols.hrc"
29*b1cdbd2cSJim Jagielski #include "dbu_dlg.hrc"
30*b1cdbd2cSJim Jagielski #include "dsitems.hxx"
31*b1cdbd2cSJim Jagielski #include "moduledbu.hxx"
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
34*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
35*b1cdbd2cSJim Jagielski #include <svl/intitem.hxx>
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski //........................................................................
38*b1cdbd2cSJim Jagielski namespace dbaui
39*b1cdbd2cSJim Jagielski {
40*b1cdbd2cSJim Jagielski //........................................................................
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski 	//====================================================================
43*b1cdbd2cSJim Jagielski 	//= TextResetOperatorEventFilter
44*b1cdbd2cSJim Jagielski 	//====================================================================
45*b1cdbd2cSJim Jagielski     class TextResetOperatorEventFilter : public ::svt::IWindowEventFilter
46*b1cdbd2cSJim Jagielski     {
47*b1cdbd2cSJim Jagielski     public:
TextResetOperatorEventFilter()48*b1cdbd2cSJim Jagielski         TextResetOperatorEventFilter()
49*b1cdbd2cSJim Jagielski         {
50*b1cdbd2cSJim Jagielski         }
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski         // IWindowEventFilter
payAttentionTo(const VclWindowEvent & _rEvent) const53*b1cdbd2cSJim Jagielski         virtual bool payAttentionTo( const VclWindowEvent& _rEvent ) const
54*b1cdbd2cSJim Jagielski         {
55*b1cdbd2cSJim Jagielski             return  ( _rEvent.GetId() == VCLEVENT_WINDOW_ENABLED )
56*b1cdbd2cSJim Jagielski                 ||  ( _rEvent.GetId() == VCLEVENT_WINDOW_DISABLED )
57*b1cdbd2cSJim Jagielski                 ||  ( _rEvent.GetId() == VCLEVENT_EDIT_MODIFY );
58*b1cdbd2cSJim Jagielski         }
59*b1cdbd2cSJim Jagielski     };
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski 	//====================================================================
62*b1cdbd2cSJim Jagielski 	//= TextResetOperator
63*b1cdbd2cSJim Jagielski 	//====================================================================
64*b1cdbd2cSJim Jagielski     class TextResetOperator :public ::svt::IWindowOperator
65*b1cdbd2cSJim Jagielski     {
66*b1cdbd2cSJim Jagielski     public:
TextResetOperator(const String & _rDisabledText)67*b1cdbd2cSJim Jagielski         TextResetOperator( const String& _rDisabledText )
68*b1cdbd2cSJim Jagielski             :m_sDisabledText( _rDisabledText )
69*b1cdbd2cSJim Jagielski         {
70*b1cdbd2cSJim Jagielski         }
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski         // IWindowOperator
73*b1cdbd2cSJim Jagielski         virtual void operateOn( const VclWindowEvent& _rTrigger, Window& _rOperateOn ) const;
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski     private:
76*b1cdbd2cSJim Jagielski         const String    m_sDisabledText;
77*b1cdbd2cSJim Jagielski               String    m_sUserText;
78*b1cdbd2cSJim Jagielski               sal_Bool      m_bLastKnownEnabledState;
79*b1cdbd2cSJim Jagielski     };
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
operateOn(const VclWindowEvent & _rTrigger,Window & _rOperateOn) const82*b1cdbd2cSJim Jagielski     void TextResetOperator::operateOn( const VclWindowEvent& _rTrigger, Window& _rOperateOn ) const
83*b1cdbd2cSJim Jagielski     {
84*b1cdbd2cSJim Jagielski         OSL_ENSURE( _rTrigger.GetWindow() == &_rOperateOn, "TextResetOperator::operateOn: you're misusing this implementation!" );
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski         switch ( _rTrigger.GetId() )
87*b1cdbd2cSJim Jagielski         {
88*b1cdbd2cSJim Jagielski         case 0:
89*b1cdbd2cSJim Jagielski             // initial call
90*b1cdbd2cSJim Jagielski             const_cast< TextResetOperator* >( this )->m_sUserText = _rTrigger.GetWindow()->GetText();
91*b1cdbd2cSJim Jagielski             break;
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski         case VCLEVENT_EDIT_MODIFY:
94*b1cdbd2cSJim Jagielski             if ( _rTrigger.GetWindow()->IsEnabled() )
95*b1cdbd2cSJim Jagielski                 const_cast< TextResetOperator* >( this )->m_sUserText = _rTrigger.GetWindow()->GetText();
96*b1cdbd2cSJim Jagielski             break;
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski         case VCLEVENT_WINDOW_ENABLED:
99*b1cdbd2cSJim Jagielski             _rOperateOn.SetText( m_sUserText );
100*b1cdbd2cSJim Jagielski             break;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski         case VCLEVENT_WINDOW_DISABLED:
103*b1cdbd2cSJim Jagielski             _rOperateOn.SetText( m_sDisabledText );
104*b1cdbd2cSJim Jagielski             break;
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski         default:
107*b1cdbd2cSJim Jagielski             OSL_ENSURE( false, "TextResetOperator::operateOn: unexpected event ID!" );
108*b1cdbd2cSJim Jagielski             // all those IDs should have been filtered out by payAttentionTo
109*b1cdbd2cSJim Jagielski             break;
110*b1cdbd2cSJim Jagielski         }
111*b1cdbd2cSJim Jagielski     }
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski 	//====================================================================
114*b1cdbd2cSJim Jagielski 	//= TextResetOperatorController
115*b1cdbd2cSJim Jagielski 	//====================================================================
116*b1cdbd2cSJim Jagielski     class TextResetOperatorController_Base
117*b1cdbd2cSJim Jagielski     {
118*b1cdbd2cSJim Jagielski     protected:
TextResetOperatorController_Base(const String & _rDisabledText)119*b1cdbd2cSJim Jagielski         TextResetOperatorController_Base( const String& _rDisabledText )
120*b1cdbd2cSJim Jagielski             :m_pEventFilter( new TextResetOperatorEventFilter )
121*b1cdbd2cSJim Jagielski             ,m_pOperator( new TextResetOperator( _rDisabledText ) )
122*b1cdbd2cSJim Jagielski         {
123*b1cdbd2cSJim Jagielski         }
124*b1cdbd2cSJim Jagielski 
getEventFilter() const125*b1cdbd2cSJim Jagielski         inline ::svt::PWindowEventFilter getEventFilter() const   { return m_pEventFilter; }
getOperator() const126*b1cdbd2cSJim Jagielski         inline ::svt::PWindowOperator    getOperator() const      { return m_pOperator; }
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski     private:
129*b1cdbd2cSJim Jagielski         ::svt::PWindowEventFilter   m_pEventFilter;
130*b1cdbd2cSJim Jagielski         ::svt::PWindowOperator      m_pOperator;
131*b1cdbd2cSJim Jagielski     };
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski     class TextResetOperatorController   :public TextResetOperatorController_Base
134*b1cdbd2cSJim Jagielski                                 ,public ::svt::DialogController
135*b1cdbd2cSJim Jagielski     {
136*b1cdbd2cSJim Jagielski     public:
TextResetOperatorController(Window & _rObservee,const String & _rDisabledText)137*b1cdbd2cSJim Jagielski         TextResetOperatorController( Window& _rObservee, const String& _rDisabledText )
138*b1cdbd2cSJim Jagielski             :TextResetOperatorController_Base( _rDisabledText )
139*b1cdbd2cSJim Jagielski             ,::svt::DialogController( _rObservee, getEventFilter(), getOperator() )
140*b1cdbd2cSJim Jagielski         {
141*b1cdbd2cSJim Jagielski             addDependentWindow( _rObservee );
142*b1cdbd2cSJim Jagielski         }
143*b1cdbd2cSJim Jagielski     };
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski 	//====================================================================
146*b1cdbd2cSJim Jagielski 	//= MySQLNativeSettings
147*b1cdbd2cSJim Jagielski 	//====================================================================
148*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
MySQLNativeSettings(Window & _rParent,const Link & _rControlModificationLink)149*b1cdbd2cSJim Jagielski     MySQLNativeSettings::MySQLNativeSettings( Window& _rParent, const Link& _rControlModificationLink )
150*b1cdbd2cSJim Jagielski         :Control( &_rParent, ModuleRes( RID_MYSQL_NATIVE_SETTINGS ).SetAutoRelease( sal_False ) )
151*b1cdbd2cSJim Jagielski         ,m_aDatabaseNameLabel	( this, ModuleRes( FT_MYSQL_DATABASE_NAME ) )
152*b1cdbd2cSJim Jagielski 		,m_aDatabaseName	    ( this, ModuleRes( ED_MYSQL_DATABASE_NAME ) )
153*b1cdbd2cSJim Jagielski         ,m_aHostPortRadio       ( this, ModuleRes( RB_MYSQL_HOST_PORT ) )
154*b1cdbd2cSJim Jagielski         ,m_aSocketRadio		    ( this, ModuleRes( RB_MYSQL_SOCKET ) )
155*b1cdbd2cSJim Jagielski         ,m_aNamedPipeRadio		( this, ModuleRes( RB_MYSQL_NAMED_PIPE ) )
156*b1cdbd2cSJim Jagielski         ,m_aHostNameLabel		( this, ModuleRes( FT_COMMON_HOST_NAME ) )
157*b1cdbd2cSJim Jagielski 		,m_aHostName		    ( this, ModuleRes( ED_COMMON_HOST_NAME ) )
158*b1cdbd2cSJim Jagielski 		,m_aPortLabel	        ( this, ModuleRes( FT_COMMON_PORT ) )
159*b1cdbd2cSJim Jagielski 		,m_aPort	            ( this, ModuleRes( NF_COMMON_PORT ) )
160*b1cdbd2cSJim Jagielski         ,m_aDefaultPort         ( this, ModuleRes( FT_COMMON_PORT_DEFAULT ) )
161*b1cdbd2cSJim Jagielski 		,m_aSocket		        ( this, ModuleRes( ED_MYSQL_SOCKET ) )
162*b1cdbd2cSJim Jagielski 		,m_aNamedPipe		    ( this, ModuleRes( ED_MYSQL_NAMED_PIPE ) )
163*b1cdbd2cSJim Jagielski     {
164*b1cdbd2cSJim Jagielski         FreeResource();
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski         m_aDatabaseName.SetModifyHdl( _rControlModificationLink );
167*b1cdbd2cSJim Jagielski         m_aHostName.SetModifyHdl( _rControlModificationLink );
168*b1cdbd2cSJim Jagielski         m_aPort.SetModifyHdl( _rControlModificationLink );
169*b1cdbd2cSJim Jagielski         m_aSocket.SetModifyHdl( _rControlModificationLink );
170*b1cdbd2cSJim Jagielski         m_aNamedPipe.SetModifyHdl( _rControlModificationLink );
171*b1cdbd2cSJim Jagielski         m_aSocketRadio.SetToggleHdl( _rControlModificationLink );
172*b1cdbd2cSJim Jagielski         m_aNamedPipeRadio.SetToggleHdl( _rControlModificationLink );
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski         m_aControlDependencies.enableOnRadioCheck( m_aHostPortRadio, m_aHostNameLabel, m_aHostName, m_aPortLabel, m_aPort, m_aDefaultPort );
175*b1cdbd2cSJim Jagielski         m_aControlDependencies.enableOnRadioCheck( m_aSocketRadio, m_aSocket );
176*b1cdbd2cSJim Jagielski         m_aControlDependencies.enableOnRadioCheck( m_aNamedPipeRadio, m_aNamedPipe );
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski         m_aControlDependencies.addController( ::svt::PDialogController(
179*b1cdbd2cSJim Jagielski             new TextResetOperatorController( m_aHostName, String::CreateFromAscii( "localhost" ) )
180*b1cdbd2cSJim Jagielski         ) );
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski         // sockets are available on Unix systems only, named pipes only on Windows
183*b1cdbd2cSJim Jagielski #ifdef UNX
184*b1cdbd2cSJim Jagielski         m_aNamedPipeRadio.Hide();
185*b1cdbd2cSJim Jagielski         m_aNamedPipe.Hide();
186*b1cdbd2cSJim Jagielski #else
187*b1cdbd2cSJim Jagielski         m_aSocketRadio.Hide();
188*b1cdbd2cSJim Jagielski         m_aSocket.Hide();
189*b1cdbd2cSJim Jagielski #endif
190*b1cdbd2cSJim Jagielski     }
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
~MySQLNativeSettings()193*b1cdbd2cSJim Jagielski     MySQLNativeSettings::~MySQLNativeSettings()
194*b1cdbd2cSJim Jagielski     {
195*b1cdbd2cSJim Jagielski     }
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
fillControls(::std::vector<ISaveValueWrapper * > & _rControlList)198*b1cdbd2cSJim Jagielski 	void MySQLNativeSettings::fillControls( ::std::vector< ISaveValueWrapper* >& _rControlList )
199*b1cdbd2cSJim Jagielski     {
200*b1cdbd2cSJim Jagielski         _rControlList.push_back( new OSaveValueWrapper< Edit >( &m_aDatabaseName ) );
201*b1cdbd2cSJim Jagielski         _rControlList.push_back( new OSaveValueWrapper< Edit >( &m_aHostName ) );
202*b1cdbd2cSJim Jagielski         _rControlList.push_back( new OSaveValueWrapper< Edit >( &m_aPort ) );
203*b1cdbd2cSJim Jagielski         _rControlList.push_back( new OSaveValueWrapper< Edit >( &m_aSocket ) );
204*b1cdbd2cSJim Jagielski         _rControlList.push_back( new OSaveValueWrapper< Edit >( &m_aNamedPipe ) );
205*b1cdbd2cSJim Jagielski     }
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
fillWindows(::std::vector<ISaveValueWrapper * > & _rControlList)208*b1cdbd2cSJim Jagielski 	void MySQLNativeSettings::fillWindows( ::std::vector< ISaveValueWrapper* >& _rControlList )
209*b1cdbd2cSJim Jagielski     {
210*b1cdbd2cSJim Jagielski         _rControlList.push_back( new ODisableWrapper< FixedText >( &m_aDatabaseNameLabel ) );
211*b1cdbd2cSJim Jagielski         _rControlList.push_back( new ODisableWrapper< FixedText >( &m_aHostNameLabel ) );
212*b1cdbd2cSJim Jagielski         _rControlList.push_back( new ODisableWrapper< FixedText >( &m_aPortLabel ) );
213*b1cdbd2cSJim Jagielski         _rControlList.push_back( new ODisableWrapper< FixedText >( &m_aDefaultPort ) );
214*b1cdbd2cSJim Jagielski         _rControlList.push_back( new ODisableWrapper< RadioButton >( &m_aSocketRadio ) );
215*b1cdbd2cSJim Jagielski         _rControlList.push_back( new ODisableWrapper< RadioButton >( &m_aNamedPipeRadio ) );
216*b1cdbd2cSJim Jagielski     }
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
FillItemSet(SfxItemSet & _rSet)219*b1cdbd2cSJim Jagielski     sal_Bool MySQLNativeSettings::FillItemSet( SfxItemSet& _rSet )
220*b1cdbd2cSJim Jagielski     {
221*b1cdbd2cSJim Jagielski 		sal_Bool bChangedSomething = sal_False;
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski         OGenericAdministrationPage::fillString( _rSet, &m_aHostName,     DSID_CONN_HOSTNAME,    bChangedSomething );
224*b1cdbd2cSJim Jagielski         OGenericAdministrationPage::fillString( _rSet, &m_aDatabaseName, DSID_DATABASENAME,     bChangedSomething );
225*b1cdbd2cSJim Jagielski         OGenericAdministrationPage::fillInt32 ( _rSet, &m_aPort,         DSID_MYSQL_PORTNUMBER, bChangedSomething );
226*b1cdbd2cSJim Jagielski #ifdef UNX
227*b1cdbd2cSJim Jagielski         OGenericAdministrationPage::fillString( _rSet, &m_aSocket,       DSID_CONN_SOCKET,      bChangedSomething );
228*b1cdbd2cSJim Jagielski #else
229*b1cdbd2cSJim Jagielski         OGenericAdministrationPage::fillString( _rSet, &m_aNamedPipe,    DSID_NAMED_PIPE,       bChangedSomething );
230*b1cdbd2cSJim Jagielski #endif
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski         return bChangedSomething;
233*b1cdbd2cSJim Jagielski     }
234*b1cdbd2cSJim Jagielski 
235*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
implInitControls(const SfxItemSet & _rSet)236*b1cdbd2cSJim Jagielski 	void MySQLNativeSettings::implInitControls(const SfxItemSet& _rSet )
237*b1cdbd2cSJim Jagielski     {
238*b1cdbd2cSJim Jagielski 		SFX_ITEMSET_GET( _rSet, pInvalid, SfxBoolItem, DSID_INVALID_SELECTION, sal_True );
239*b1cdbd2cSJim Jagielski 		bool bValid = !pInvalid || !pInvalid->GetValue();
240*b1cdbd2cSJim Jagielski         if ( !bValid )
241*b1cdbd2cSJim Jagielski             return;
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski         SFX_ITEMSET_GET( _rSet, pDatabaseName,  SfxStringItem,  DSID_DATABASENAME,      sal_True );
244*b1cdbd2cSJim Jagielski         SFX_ITEMSET_GET( _rSet, pHostName,      SfxStringItem,  DSID_CONN_HOSTNAME,     sal_True );
245*b1cdbd2cSJim Jagielski         SFX_ITEMSET_GET( _rSet, pPortNumber,    SfxInt32Item,   DSID_MYSQL_PORTNUMBER,  sal_True );
246*b1cdbd2cSJim Jagielski         SFX_ITEMSET_GET( _rSet, pSocket,        SfxStringItem,  DSID_CONN_SOCKET,       sal_True );
247*b1cdbd2cSJim Jagielski         SFX_ITEMSET_GET( _rSet, pNamedPipe,     SfxStringItem,  DSID_NAMED_PIPE,       sal_True );
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski         m_aDatabaseName.SetText( pDatabaseName->GetValue() );
250*b1cdbd2cSJim Jagielski         m_aDatabaseName.ClearModifyFlag();
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski         m_aHostName.SetText( pHostName->GetValue() );
253*b1cdbd2cSJim Jagielski         m_aHostName.ClearModifyFlag();
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski         m_aPort.SetValue( pPortNumber->GetValue() );
256*b1cdbd2cSJim Jagielski         m_aPort.ClearModifyFlag();
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski         m_aSocket.SetText( pSocket->GetValue() );
259*b1cdbd2cSJim Jagielski         m_aSocket.ClearModifyFlag();
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski         m_aNamedPipe.SetText( pNamedPipe->GetValue() );
262*b1cdbd2cSJim Jagielski         m_aNamedPipe.ClearModifyFlag();
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski         // if a socket (on Unix) or a pipe name (on Windows) is given, this is preferred over
265*b1cdbd2cSJim Jagielski         // the port
266*b1cdbd2cSJim Jagielski #ifdef UNX
267*b1cdbd2cSJim Jagielski         RadioButton& rSocketPipeRadio = m_aSocketRadio;
268*b1cdbd2cSJim Jagielski         const SfxStringItem* pSocketPipeItem = pSocket;
269*b1cdbd2cSJim Jagielski #else
270*b1cdbd2cSJim Jagielski         RadioButton& rSocketPipeRadio = m_aNamedPipeRadio;
271*b1cdbd2cSJim Jagielski         const SfxStringItem* pSocketPipeItem = pNamedPipe;
272*b1cdbd2cSJim Jagielski #endif
273*b1cdbd2cSJim Jagielski         String sSocketPipe( pSocketPipeItem->GetValue() );
274*b1cdbd2cSJim Jagielski         if ( sSocketPipe.Len() > 0 )
275*b1cdbd2cSJim Jagielski             rSocketPipeRadio.Check();
276*b1cdbd2cSJim Jagielski         else
277*b1cdbd2cSJim Jagielski             m_aHostPortRadio.Check();
278*b1cdbd2cSJim Jagielski     }
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski     //--------------------------------------------------------------------
canAdvance() const281*b1cdbd2cSJim Jagielski 	bool MySQLNativeSettings::canAdvance() const
282*b1cdbd2cSJim Jagielski     {
283*b1cdbd2cSJim Jagielski         if ( m_aDatabaseName.GetText().Len() == 0 )
284*b1cdbd2cSJim Jagielski             return false;
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski         if  (   m_aHostPortRadio.IsChecked()
287*b1cdbd2cSJim Jagielski             &&  (   ( m_aHostName.GetText().Len() == 0 )
288*b1cdbd2cSJim Jagielski                 ||  ( m_aPort.GetText().Len() == 0 )
289*b1cdbd2cSJim Jagielski                 )
290*b1cdbd2cSJim Jagielski             )
291*b1cdbd2cSJim Jagielski             return false;
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski #ifdef UNX
294*b1cdbd2cSJim Jagielski         if  (   ( m_aSocketRadio.IsChecked() )
295*b1cdbd2cSJim Jagielski             &&  ( m_aSocket.GetText().Len() == 0 )
296*b1cdbd2cSJim Jagielski             )
297*b1cdbd2cSJim Jagielski #else
298*b1cdbd2cSJim Jagielski         if  (   ( m_aNamedPipeRadio.IsChecked() )
299*b1cdbd2cSJim Jagielski             &&  ( m_aNamedPipe.GetText().Len() == 0 )
300*b1cdbd2cSJim Jagielski             )
301*b1cdbd2cSJim Jagielski #endif
302*b1cdbd2cSJim Jagielski             return false;
303*b1cdbd2cSJim Jagielski 
304*b1cdbd2cSJim Jagielski         return true;
305*b1cdbd2cSJim Jagielski     }
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski //........................................................................
308*b1cdbd2cSJim Jagielski } // namespace dbaui
309*b1cdbd2cSJim Jagielski //........................................................................
310