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