LCOV - code coverage report
Current view: top level - dbaccess/source/ui/dlg - detailpages.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 1 441 0.2 %
Date: 2015-06-13 12:38:46 Functions: 2 81 2.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <config_features.h>
      21             : #include "detailpages.hxx"
      22             : #include "sqlmessage.hxx"
      23             : #include "dsmeta.hxx"
      24             : #include "advancedsettings.hxx"
      25             : #include "DbAdminImpl.hxx"
      26             : #include "dsitems.hxx"
      27             : #include "dbfindex.hxx"
      28             : #include "localresaccess.hxx"
      29             : #include "dsnItem.hxx"
      30             : 
      31             : #include "dbaccess_helpid.hrc"
      32             : #include "dbu_dlg.hrc"
      33             : 
      34             : #include <svl/itemset.hxx>
      35             : #include <svl/stritem.hxx>
      36             : #include <svl/eitem.hxx>
      37             : #include <svl/intitem.hxx>
      38             : #include <vcl/msgbox.hxx>
      39             : #include <vcl/mnemonic.hxx>
      40             : #include <svl/cjkoptions.hxx>
      41             : #if HAVE_FEATURE_JAVA
      42             : #include <jvmaccess/virtualmachine.hxx>
      43             : #endif
      44             : #include <connectivity/CommonTools.hxx>
      45             : #include "DriverSettings.hxx"
      46             : #include "dbadmin.hxx"
      47             : #include <comphelper/types.hxx>
      48             : 
      49             : namespace dbaui
      50             : {
      51             : 
      52             :     using namespace ::com::sun::star::uno;
      53             :     using namespace ::com::sun::star::sdbc;
      54             :     using namespace ::com::sun::star::beans;
      55             :     using namespace ::com::sun::star::lang;
      56             :     using namespace ::com::sun::star::container;
      57             :     using namespace ::dbtools;
      58             : 
      59           0 :     OCommonBehaviourTabPage::OCommonBehaviourTabPage(vcl::Window* pParent, const OString& rId,
      60             :         const OUString& rUIXMLDescription, const SfxItemSet& _rCoreAttrs,
      61             :         sal_uInt32 nControlFlags)
      62             : 
      63             :         :OGenericAdministrationPage(pParent, rId, rUIXMLDescription, _rCoreAttrs)
      64             :         ,m_pOptionsLabel(NULL)
      65             :         ,m_pOptions(NULL)
      66             :         ,m_pCharsetLabel(NULL)
      67             :         ,m_pCharset(NULL)
      68             :         ,m_pAutoRetrievingEnabled(NULL)
      69             :         ,m_pAutoIncrementLabel(NULL)
      70             :         ,m_pAutoIncrement(NULL)
      71             :         ,m_pAutoRetrievingLabel(NULL)
      72             :         ,m_pAutoRetrieving(NULL)
      73           0 :         ,m_nControlFlags(nControlFlags)
      74             :     {
      75             : 
      76           0 :         if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
      77             :         {
      78           0 :             m_pOptionsLabel = get<FixedText>("optionslabel");
      79           0 :             m_pOptionsLabel->Show();
      80           0 :             m_pOptions = get<Edit>("options");
      81           0 :             m_pOptions->Show();
      82           0 :             m_pOptions->SetModifyHdl(getControlModifiedLink());
      83             :         }
      84             : 
      85           0 :         if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
      86             :         {
      87           0 :             FixedText* pDataConvertLabel = get<FixedText>("charsetheader");
      88           0 :             pDataConvertLabel->Show();
      89           0 :             m_pCharsetLabel = get<FixedText>("charsetlabel");
      90           0 :             m_pCharsetLabel->Show();
      91           0 :             m_pCharset = get<CharSetListBox>("charset");
      92           0 :             m_pCharset->Show();
      93           0 :             m_pCharset->SetSelectHdl(getControlModifiedLink());
      94             :         }
      95           0 :     }
      96             : 
      97           0 :     OCommonBehaviourTabPage::~OCommonBehaviourTabPage()
      98             :     {
      99           0 :         disposeOnce();
     100           0 :     }
     101             : 
     102           0 :     void OCommonBehaviourTabPage::dispose()
     103             :     {
     104           0 :         m_pOptionsLabel.disposeAndClear();
     105           0 :         m_pOptions.disposeAndClear();
     106           0 :         m_pCharsetLabel.disposeAndClear();
     107           0 :         m_pCharset.disposeAndClear();
     108           0 :         m_pAutoIncrementLabel.disposeAndClear();
     109           0 :         m_pAutoIncrement.disposeAndClear();
     110           0 :         m_pAutoRetrievingEnabled.disposeAndClear();
     111           0 :         m_pAutoRetrievingLabel.disposeAndClear();
     112           0 :         m_pAutoRetrieving.disposeAndClear();
     113           0 :         OGenericAdministrationPage::dispose();
     114           0 :     }
     115             : 
     116           0 :     void OCommonBehaviourTabPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList)
     117             :     {
     118           0 :         if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
     119             :         {
     120           0 :             _rControlList.push_back(new ODisableWrapper<FixedText>(m_pOptionsLabel));
     121             :         }
     122             : 
     123           0 :         if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
     124             :         {
     125           0 :             _rControlList.push_back(new ODisableWrapper<FixedText>(m_pCharsetLabel));
     126             :         }
     127           0 :     }
     128           0 :     void OCommonBehaviourTabPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList)
     129             :     {
     130           0 :         if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
     131           0 :             _rControlList.push_back(new OSaveValueWrapper<Edit>(m_pOptions));
     132             : 
     133           0 :         if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
     134           0 :             _rControlList.push_back(new OSaveValueWrapper<ListBox>(m_pCharset));
     135           0 :     }
     136             : 
     137           0 :     void OCommonBehaviourTabPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     138             :     {
     139             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     140             :         bool bValid, bReadonly;
     141           0 :         getFlags(_rSet, bValid, bReadonly);
     142             : 
     143             :         // collect the items
     144           0 :         SFX_ITEMSET_GET(_rSet, pOptionsItem, SfxStringItem, DSID_ADDITIONALOPTIONS, true);
     145           0 :         SFX_ITEMSET_GET(_rSet, pCharsetItem, SfxStringItem, DSID_CHARSET, true);
     146             : 
     147             :         // forward the values to the controls
     148           0 :         if (bValid)
     149             :         {
     150           0 :             if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
     151             :             {
     152           0 :                 m_pOptions->SetText(pOptionsItem->GetValue());
     153           0 :                 m_pOptions->ClearModifyFlag();
     154             :             }
     155             : 
     156           0 :             if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
     157             :             {
     158           0 :                 m_pCharset->SelectEntryByIanaName( pCharsetItem->GetValue() );
     159             :             }
     160             :         }
     161           0 :         OGenericAdministrationPage::implInitControls(_rSet, _bSaveValue);
     162           0 :     }
     163             : 
     164           0 :     bool OCommonBehaviourTabPage::FillItemSet(SfxItemSet* _rSet)
     165             :     {
     166           0 :         bool bChangedSomething = false;
     167             : 
     168           0 :         if ((m_nControlFlags & CBTP_USE_OPTIONS) == CBTP_USE_OPTIONS)
     169             :         {
     170           0 :             fillString(*_rSet,m_pOptions,DSID_ADDITIONALOPTIONS,bChangedSomething);
     171             :         }
     172             : 
     173           0 :         if ((m_nControlFlags & CBTP_USE_CHARSET) == CBTP_USE_CHARSET)
     174             :         {
     175           0 :             if ( m_pCharset->StoreSelectedCharSet( *_rSet, DSID_CHARSET ) )
     176           0 :                 bChangedSomething = true;
     177             :         }
     178             : 
     179           0 :         return bChangedSomething;
     180             :     }
     181             : 
     182             :     // ODbaseDetailsPage
     183           0 :     ODbaseDetailsPage::ODbaseDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     184           0 :         :OCommonBehaviourTabPage(pParent, "DbasePage", "dbaccess/ui/dbasepage.ui", _rCoreAttrs, CBTP_USE_CHARSET)
     185             :     {
     186           0 :         get(m_pShowDeleted, "showDelRowsCheckbutton");
     187           0 :         get(m_pFT_Message, "specMessageLabel");
     188           0 :         get(m_pIndexes, "indiciesButton");
     189           0 :         set_height_request(300);
     190             : 
     191           0 :         m_pIndexes->SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked));
     192           0 :         m_pShowDeleted->SetClickHdl(LINK(this, ODbaseDetailsPage, OnButtonClicked));
     193           0 :     }
     194             : 
     195           0 :     ODbaseDetailsPage::~ODbaseDetailsPage()
     196             :     {
     197           0 :         disposeOnce();
     198           0 :     }
     199             : 
     200           0 :     void ODbaseDetailsPage::dispose()
     201             :     {
     202           0 :         m_pShowDeleted.clear();
     203           0 :         m_pFT_Message.clear();
     204           0 :         m_pIndexes.clear();
     205           0 :         OCommonBehaviourTabPage::dispose();
     206           0 :     }
     207             : 
     208           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateDbase( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     209             :     {
     210           0 :         return VclPtr<ODbaseDetailsPage>::Create( pParent, *_rAttrSet );
     211             :     }
     212             : 
     213           0 :     void ODbaseDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     214             :     {
     215             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     216             :         bool bValid, bReadonly;
     217           0 :         getFlags(_rSet, bValid, bReadonly);
     218             : 
     219             :         // get the DSN string (needed for the index dialog)
     220           0 :         SFX_ITEMSET_GET(_rSet, pUrlItem, SfxStringItem, DSID_CONNECTURL, true);
     221           0 :         SFX_ITEMSET_GET(_rSet, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, true);
     222           0 :         ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL;
     223           0 :         if (pTypeCollection && pUrlItem && pUrlItem->GetValue().getLength())
     224           0 :             m_sDsn = pTypeCollection->cutPrefix(pUrlItem->GetValue());
     225             : 
     226             :         // get the other relevant items
     227           0 :         SFX_ITEMSET_GET(_rSet, pDeletedItem, SfxBoolItem, DSID_SHOWDELETEDROWS, true);
     228             : 
     229           0 :         if ( bValid )
     230             :         {
     231           0 :             m_pShowDeleted->Check( pDeletedItem->GetValue() );
     232           0 :             m_pFT_Message->Show(m_pShowDeleted->IsChecked());
     233             :         }
     234             : 
     235           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     236           0 :     }
     237             : 
     238           0 :     bool ODbaseDetailsPage::FillItemSet( SfxItemSet* _rSet )
     239             :     {
     240           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
     241             : 
     242           0 :         fillBool(*_rSet,m_pShowDeleted,DSID_SHOWDELETEDROWS,bChangedSomething);
     243           0 :         return bChangedSomething;
     244             :     }
     245             : 
     246           0 :     IMPL_LINK( ODbaseDetailsPage, OnButtonClicked, Button*, pButton )
     247             :     {
     248           0 :         if (m_pIndexes == pButton)
     249             :         {
     250           0 :             ScopedVclPtrInstance< ODbaseIndexDialog > aIndexDialog(this, m_sDsn);
     251           0 :             aIndexDialog->Execute();
     252             :         }
     253             :         else
     254             :         {
     255           0 :             m_pFT_Message->Show(m_pShowDeleted->IsChecked());
     256             :             // it was one of the checkboxes -> we count as modified from now on
     257           0 :             callModifiedHdl();
     258             :         }
     259             : 
     260           0 :         return 0;
     261             :     }
     262             : 
     263             :     // OAdoDetailsPage
     264           0 :     OAdoDetailsPage::OAdoDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     265           0 :         :OCommonBehaviourTabPage(pParent, "AutoCharset", "dbaccess/ui/autocharsetpage.ui", _rCoreAttrs, CBTP_USE_CHARSET )
     266             :     {
     267             : 
     268           0 :     }
     269             : 
     270           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateAdo( vcl::Window* pParent,   const SfxItemSet* _rAttrSet )
     271             :     {
     272           0 :         return VclPtr<OAdoDetailsPage>::Create( pParent, *_rAttrSet );
     273             :     }
     274             : 
     275             :     // OOdbcDetailsPage
     276           0 :     OOdbcDetailsPage::OOdbcDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     277           0 :         :OCommonBehaviourTabPage(pParent, "ODBC", "dbaccess/ui/odbcpage.ui", _rCoreAttrs, CBTP_USE_CHARSET | CBTP_USE_OPTIONS)
     278             :     {
     279           0 :         get(m_pUseCatalog, "useCatalogCheckbutton");
     280           0 :         m_pUseCatalog->SetToggleHdl(getControlModifiedLink());
     281           0 :     }
     282             : 
     283           0 :     OOdbcDetailsPage::~OOdbcDetailsPage()
     284             :     {
     285           0 :         disposeOnce();
     286           0 :     }
     287             : 
     288           0 :     void OOdbcDetailsPage::dispose()
     289             :     {
     290           0 :         m_pUseCatalog.clear();
     291           0 :         OCommonBehaviourTabPage::dispose();
     292           0 :     }
     293             : 
     294           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateODBC( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     295             :     {
     296           0 :         return VclPtr<OOdbcDetailsPage>::Create( pParent, *_rAttrSet );
     297             :     }
     298             : 
     299           0 :     bool OOdbcDetailsPage::FillItemSet( SfxItemSet* _rSet )
     300             :     {
     301           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
     302           0 :         fillBool(*_rSet,m_pUseCatalog,DSID_USECATALOG,bChangedSomething);
     303           0 :         return bChangedSomething;
     304             :     }
     305           0 :     void OOdbcDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     306             :     {
     307             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     308             :         bool bValid, bReadonly;
     309           0 :         getFlags(_rSet, bValid, bReadonly);
     310             : 
     311           0 :         SFX_ITEMSET_GET(_rSet, pUseCatalogItem, SfxBoolItem, DSID_USECATALOG, true);
     312             : 
     313           0 :         if ( bValid )
     314           0 :             m_pUseCatalog->Check(pUseCatalogItem->GetValue());
     315             : 
     316           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     317           0 :     }
     318             :     // OOdbcDetailsPage
     319           0 :     OUserDriverDetailsPage::OUserDriverDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     320             :         : OCommonBehaviourTabPage(pParent, "UserDetailsPage", "dbaccess/ui/userdetailspage.ui", _rCoreAttrs,
     321           0 :             CBTP_USE_CHARSET | CBTP_USE_OPTIONS)
     322             :     {
     323           0 :         get(m_pFTHostname, "hostnameft");
     324           0 :         get(m_pEDHostname, "hostname");
     325           0 :         get(m_pPortNumber, "portnumberft");
     326           0 :         get(m_pNFPortNumber, "portnumber");
     327           0 :         m_pNFPortNumber->SetUseThousandSep(false);
     328           0 :         get(m_pUseCatalog, "usecatalog");
     329           0 :         m_pUseCatalog->SetToggleHdl(getControlModifiedLink());
     330           0 :     }
     331             : 
     332           0 :     OUserDriverDetailsPage::~OUserDriverDetailsPage()
     333             :     {
     334           0 :         disposeOnce();
     335           0 :     }
     336             : 
     337           0 :     void OUserDriverDetailsPage::dispose()
     338             :     {
     339           0 :         m_pFTHostname.clear();
     340           0 :         m_pEDHostname.clear();
     341           0 :         m_pPortNumber.clear();
     342           0 :         m_pNFPortNumber.clear();
     343           0 :         m_pUseCatalog.clear();
     344           0 :         OCommonBehaviourTabPage::dispose();
     345           0 :     }
     346             : 
     347           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateUser( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     348             :     {
     349           0 :         return VclPtr<OUserDriverDetailsPage>::Create( pParent, *_rAttrSet );
     350             :     }
     351             : 
     352           0 :     bool OUserDriverDetailsPage::FillItemSet( SfxItemSet* _rSet )
     353             :     {
     354           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
     355             : 
     356           0 :         fillInt32(*_rSet,m_pNFPortNumber,DSID_CONN_PORTNUMBER,bChangedSomething);
     357           0 :         fillString(*_rSet,m_pEDHostname,DSID_CONN_HOSTNAME,bChangedSomething);
     358           0 :         fillBool(*_rSet,m_pUseCatalog,DSID_USECATALOG,bChangedSomething);
     359             : 
     360           0 :         return bChangedSomething;
     361             :     }
     362           0 :     void OUserDriverDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList)
     363             :     {
     364           0 :         OCommonBehaviourTabPage::fillControls(_rControlList);
     365           0 :         _rControlList.push_back(new OSaveValueWrapper<Edit>(m_pEDHostname));
     366           0 :         _rControlList.push_back(new OSaveValueWrapper<CheckBox>(m_pUseCatalog));
     367           0 :         _rControlList.push_back(new OSaveValueWrapper<NumericField>(m_pNFPortNumber));
     368           0 :     }
     369           0 :     void OUserDriverDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList)
     370             :     {
     371           0 :         OCommonBehaviourTabPage::fillWindows(_rControlList);
     372           0 :         _rControlList.push_back(new ODisableWrapper<FixedText>(m_pFTHostname));
     373           0 :         _rControlList.push_back(new ODisableWrapper<FixedText>(m_pPortNumber));
     374           0 :     }
     375           0 :     void OUserDriverDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     376             :     {
     377             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     378             :         bool bValid, bReadonly;
     379           0 :         getFlags(_rSet, bValid, bReadonly);
     380             : 
     381           0 :         SFX_ITEMSET_GET(_rSet, pUseCatalogItem, SfxBoolItem, DSID_USECATALOG, true);
     382           0 :         SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, true);
     383           0 :         SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, DSID_CONN_PORTNUMBER, true);
     384             : 
     385           0 :         if ( bValid )
     386             :         {
     387           0 :             m_pEDHostname->SetText(pHostName->GetValue());
     388           0 :             m_pEDHostname->ClearModifyFlag();
     389             : 
     390           0 :             m_pNFPortNumber->SetValue(pPortNumber->GetValue());
     391           0 :             m_pNFPortNumber->ClearModifyFlag();
     392             : 
     393           0 :             m_pUseCatalog->Check(pUseCatalogItem->GetValue());
     394             :         }
     395             : 
     396           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     397           0 :     }
     398             :     // OMySQLODBCDetailsPage
     399           0 :     OMySQLODBCDetailsPage::OMySQLODBCDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     400           0 :         :OCommonBehaviourTabPage(pParent, "AutoCharset", "dbaccess/ui/autocharsetpage.ui", _rCoreAttrs, CBTP_USE_CHARSET )
     401             :     {
     402           0 :     }
     403             : 
     404           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateMySQLODBC( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     405             :     {
     406           0 :         return VclPtr<OMySQLODBCDetailsPage>::Create( pParent, *_rAttrSet );
     407             :     }
     408             : 
     409             :     // OMySQLJDBCDetailsPage
     410           0 :     OGeneralSpecialJDBCDetailsPage::OGeneralSpecialJDBCDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs ,sal_uInt16 _nPortId, bool bShowSocket )
     411             :         :OCommonBehaviourTabPage(pParent, "GeneralSpecialJDBCDetails", "dbaccess/ui/generalspecialjdbcdetailspage.ui", _rCoreAttrs, CBTP_USE_CHARSET)
     412             :         ,m_nPortId(_nPortId)
     413           0 :         ,m_bUseClass(true)
     414             :     {
     415           0 :         get(m_pEDHostname, "hostNameEntry");
     416           0 :         get(m_pNFPortNumber, "portNumberSpinbutton");
     417           0 :         m_pNFPortNumber->SetUseThousandSep(false);
     418           0 :         get(m_pFTSocket, "socketLabel");
     419           0 :         get(m_pEDSocket, "socketEntry");
     420           0 :         get(m_pFTDriverClass, "driverClassLabel");
     421           0 :         get(m_pEDDriverClass, "jdbcDriverClassEntry");
     422           0 :         get(m_pTestJavaDriver, "testDriverClassButton");
     423             : 
     424           0 :         SFX_ITEMSET_GET(_rCoreAttrs, pUrlItem, SfxStringItem, DSID_CONNECTURL, true);
     425           0 :         SFX_ITEMSET_GET(_rCoreAttrs, pTypesItem, DbuTypeCollectionItem, DSID_TYPECOLLECTION, true);
     426           0 :         ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : NULL;
     427           0 :         if (pTypeCollection && pUrlItem && pUrlItem->GetValue().getLength() )
     428             :         {
     429           0 :             m_sDefaultJdbcDriverName = pTypeCollection->getJavaDriverClass(pUrlItem->GetValue());
     430             :         }
     431           0 :         if ( m_sDefaultJdbcDriverName.getLength() )
     432             :         {
     433           0 :             m_pEDDriverClass->SetModifyHdl(getControlModifiedLink());
     434           0 :             m_pEDDriverClass->SetModifyHdl(LINK(this, OGeneralSpecialJDBCDetailsPage, OnEditModified));
     435           0 :             m_pTestJavaDriver->SetClickHdl(LINK(this,OGeneralSpecialJDBCDetailsPage,OnTestJavaClickHdl));
     436             :         }
     437             :         else
     438             :         {
     439           0 :             m_bUseClass = false;
     440           0 :             m_pFTDriverClass->Show(false);
     441           0 :             m_pEDDriverClass->Show(false);
     442           0 :             m_pTestJavaDriver->Show(false);
     443             :         }
     444             : 
     445           0 :         m_pFTSocket->Show(bShowSocket && !m_bUseClass);
     446           0 :         m_pEDSocket->Show(bShowSocket && !m_bUseClass);
     447             : 
     448           0 :         m_pEDHostname->SetModifyHdl(getControlModifiedLink());
     449           0 :         m_pNFPortNumber->SetModifyHdl(getControlModifiedLink());
     450           0 :         m_pEDSocket->SetModifyHdl(getControlModifiedLink());
     451           0 :     }
     452             : 
     453           0 :     OGeneralSpecialJDBCDetailsPage::~OGeneralSpecialJDBCDetailsPage()
     454             :     {
     455           0 :         disposeOnce();
     456           0 :     }
     457             : 
     458           0 :     void OGeneralSpecialJDBCDetailsPage::dispose()
     459             :     {
     460           0 :         m_pEDHostname.clear();
     461           0 :         m_pNFPortNumber.clear();
     462           0 :         m_pFTSocket.clear();
     463           0 :         m_pEDSocket.clear();
     464           0 :         m_pFTDriverClass.clear();
     465           0 :         m_pEDDriverClass.clear();
     466           0 :         m_pTestJavaDriver.clear();
     467           0 :         OCommonBehaviourTabPage::dispose();
     468           0 :     }
     469             : 
     470           0 :     bool OGeneralSpecialJDBCDetailsPage::FillItemSet( SfxItemSet* _rSet )
     471             :     {
     472           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
     473           0 :         if ( m_bUseClass )
     474           0 :             fillString(*_rSet,m_pEDDriverClass,DSID_JDBCDRIVERCLASS,bChangedSomething);
     475           0 :         fillString(*_rSet,m_pEDHostname,DSID_CONN_HOSTNAME,bChangedSomething);
     476           0 :         fillString(*_rSet,m_pEDSocket,DSID_CONN_SOCKET,bChangedSomething);
     477           0 :         fillInt32(*_rSet,m_pNFPortNumber,m_nPortId,bChangedSomething );
     478             : 
     479           0 :         return bChangedSomething;
     480             :     }
     481           0 :     void OGeneralSpecialJDBCDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     482             :     {
     483             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     484             :         bool bValid, bReadonly;
     485           0 :         getFlags(_rSet, bValid, bReadonly);
     486             : 
     487           0 :         SFX_ITEMSET_GET(_rSet, pDrvItem, SfxStringItem, DSID_JDBCDRIVERCLASS, true);
     488           0 :         SFX_ITEMSET_GET(_rSet, pHostName, SfxStringItem, DSID_CONN_HOSTNAME, true);
     489           0 :         SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, m_nPortId, true);
     490           0 :         SFX_ITEMSET_GET(_rSet, pSocket, SfxStringItem, DSID_CONN_SOCKET, true);
     491             : 
     492           0 :         if ( bValid )
     493             :         {
     494           0 :             if ( m_bUseClass )
     495             :             {
     496           0 :                 m_pEDDriverClass->SetText(pDrvItem->GetValue());
     497           0 :                 m_pEDDriverClass->ClearModifyFlag();
     498             :             }
     499             : 
     500           0 :             m_pEDHostname->SetText(pHostName->GetValue());
     501           0 :             m_pEDHostname->ClearModifyFlag();
     502             : 
     503           0 :             m_pNFPortNumber->SetValue(pPortNumber->GetValue());
     504           0 :             m_pNFPortNumber->ClearModifyFlag();
     505             : 
     506           0 :             m_pEDSocket->SetText(pSocket->GetValue());
     507           0 :             m_pEDSocket->ClearModifyFlag();
     508             :         }
     509             : 
     510           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     511             : 
     512             :         // to get the correcxt value when saveValue was called by base class
     513           0 :         if ( m_bUseClass && m_pEDDriverClass->GetText().trim().isEmpty() )
     514             :         {
     515           0 :             m_pEDDriverClass->SetText(m_sDefaultJdbcDriverName);
     516           0 :             m_pEDDriverClass->SetModifyFlag();
     517             :         }
     518           0 :     }
     519           0 :     IMPL_LINK(OGeneralSpecialJDBCDetailsPage, OnTestJavaClickHdl, PushButton*, /*_pButton*/)
     520             :     {
     521             :         OSL_ENSURE(m_pAdminDialog,"No Admin dialog set! ->GPF");
     522             :         OSL_ENSURE(m_bUseClass,"Who called me?");
     523             : 
     524           0 :         bool bSuccess = false;
     525             : #if HAVE_FEATURE_JAVA
     526             :         try
     527             :         {
     528           0 :             if ( !m_pEDDriverClass->GetText().trim().isEmpty() )
     529             :             {
     530             : // TODO change jvmaccess
     531           0 :                 ::rtl::Reference< jvmaccess::VirtualMachine > xJVM = ::connectivity::getJavaVM( m_pAdminDialog->getORB() );
     532           0 :                 m_pEDDriverClass->SetText(m_pEDDriverClass->GetText().trim()); // fdo#68341
     533           0 :                 bSuccess = ::connectivity::existsJavaClassByName(xJVM,m_pEDDriverClass->GetText());
     534             :             }
     535             :         }
     536           0 :         catch(Exception&)
     537             :         {
     538             :         }
     539             : #endif
     540           0 :         const sal_uInt16 nMessage = bSuccess ? STR_JDBCDRIVER_SUCCESS : STR_JDBCDRIVER_NO_SUCCESS;
     541           0 :         const OSQLMessageBox::MessageType mt = bSuccess ? OSQLMessageBox::Info : OSQLMessageBox::Error;
     542           0 :         ScopedVclPtrInstance< OSQLMessageBox > aMsg( this, OUString( ModuleRes( nMessage ) ), OUString(), WB_OK | WB_DEF_OK, mt );
     543           0 :         aMsg->Execute();
     544           0 :         return 0L;
     545             :     }
     546           0 :     IMPL_LINK(OGeneralSpecialJDBCDetailsPage, OnEditModified, Edit*, _pEdit)
     547             :     {
     548           0 :         if ( m_bUseClass && _pEdit == m_pEDDriverClass )
     549           0 :             m_pTestJavaDriver->Enable( !m_pEDDriverClass->GetText().trim().isEmpty() );
     550             : 
     551             :         // tell the listener we were modified
     552           0 :         callModifiedHdl();
     553           0 :         return 0L;
     554             :     }
     555             : 
     556             :     // MySQLNativePage
     557           0 :     MySQLNativePage::MySQLNativePage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     558             :         :OCommonBehaviourTabPage(pParent, "MysqlNativePage", "dbaccess/ui/mysqlnativepage.ui", _rCoreAttrs, CBTP_USE_CHARSET )
     559           0 :         ,m_aMySQLSettings       ( VclPtr<MySQLNativeSettings>::Create(*get<VclVBox>("MySQLSettingsContainer"), getControlModifiedLink()) )
     560             :     {
     561           0 :         get(m_pSeparator1, "connectionheader");
     562           0 :         get(m_pSeparator2, "userheader");
     563           0 :         get(m_pUserNameLabel, "usernamelabel");
     564           0 :         get(m_pUserName, "username");
     565           0 :         get(m_pPasswordRequired, "passwordrequired");
     566             : 
     567           0 :         m_pUserName->SetModifyHdl(getControlModifiedLink());
     568             : 
     569           0 :         m_aMySQLSettings->Show();
     570           0 :     }
     571             : 
     572           0 :     MySQLNativePage::~MySQLNativePage()
     573             :     {
     574           0 :         disposeOnce();
     575           0 :     }
     576             : 
     577           0 :     void MySQLNativePage::dispose()
     578             :     {
     579           0 :         m_aMySQLSettings.disposeAndClear();
     580           0 :         m_pSeparator1.clear();
     581           0 :         m_pSeparator2.clear();
     582           0 :         m_pUserNameLabel.clear();
     583           0 :         m_pUserName.clear();
     584           0 :         m_pPasswordRequired.clear();
     585           0 :         OCommonBehaviourTabPage::dispose();
     586           0 :     }
     587             : 
     588           0 :     void MySQLNativePage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList)
     589             :     {
     590           0 :         OCommonBehaviourTabPage::fillControls( _rControlList );
     591           0 :         m_aMySQLSettings->fillControls( _rControlList );
     592             : 
     593           0 :         _rControlList.push_back(new OSaveValueWrapper<Edit>(m_pUserName));
     594           0 :         _rControlList.push_back(new OSaveValueWrapper<CheckBox>(m_pPasswordRequired));
     595           0 :     }
     596           0 :     void MySQLNativePage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList)
     597             :     {
     598           0 :         OCommonBehaviourTabPage::fillWindows( _rControlList );
     599           0 :         m_aMySQLSettings->fillWindows( _rControlList);
     600             : 
     601           0 :         _rControlList.push_back(new ODisableWrapper<FixedText>(m_pSeparator1));
     602           0 :         _rControlList.push_back(new ODisableWrapper<FixedText>(m_pSeparator2));
     603           0 :         _rControlList.push_back(new ODisableWrapper<FixedText>(m_pUserNameLabel));
     604           0 :     }
     605             : 
     606           0 :     bool MySQLNativePage::FillItemSet( SfxItemSet* _rSet )
     607             :     {
     608           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet( _rSet );
     609             : 
     610           0 :         bChangedSomething |= m_aMySQLSettings->FillItemSet( _rSet );
     611             : 
     612           0 :         if ( m_pUserName->IsValueChangedFromSaved() )
     613             :         {
     614           0 :             _rSet->Put( SfxStringItem( DSID_USER, m_pUserName->GetText() ) );
     615           0 :             _rSet->Put( SfxStringItem( DSID_PASSWORD, OUString()));
     616           0 :             bChangedSomething = true;
     617             :         }
     618           0 :         fillBool(*_rSet,m_pPasswordRequired,DSID_PASSWORDREQUIRED,bChangedSomething);
     619             : 
     620           0 :         return bChangedSomething;
     621             :     }
     622           0 :     void MySQLNativePage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     623             :     {
     624             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     625             :         bool bValid, bReadonly;
     626           0 :         getFlags(_rSet, bValid, bReadonly);
     627             : 
     628           0 :         m_aMySQLSettings->implInitControls( _rSet );
     629             : 
     630           0 :         SFX_ITEMSET_GET(_rSet, pUidItem, SfxStringItem, DSID_USER, true);
     631           0 :         SFX_ITEMSET_GET(_rSet, pAllowEmptyPwd, SfxBoolItem, DSID_PASSWORDREQUIRED, true);
     632             : 
     633           0 :         if ( bValid )
     634             :         {
     635           0 :             m_pUserName->SetText(pUidItem->GetValue());
     636           0 :             m_pUserName->ClearModifyFlag();
     637           0 :             m_pPasswordRequired->Check(pAllowEmptyPwd->GetValue());
     638             :         }
     639             : 
     640           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     641           0 :     }
     642             : 
     643           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateMySQLJDBC( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     644             :     {
     645           0 :         return VclPtr<OGeneralSpecialJDBCDetailsPage>::Create( pParent, *_rAttrSet,DSID_MYSQL_PORTNUMBER );
     646             :     }
     647           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateMySQLNATIVE( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     648             :     {
     649           0 :         return VclPtr<MySQLNativePage>::Create( pParent, *_rAttrSet );
     650             :     }
     651             : 
     652           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateOracleJDBC( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     653             :     {
     654           0 :         return VclPtr<OGeneralSpecialJDBCDetailsPage>::Create( pParent, *_rAttrSet,DSID_ORACLE_PORTNUMBER, false);
     655             :     }
     656             : 
     657             :     // OLDAPDetailsPage
     658           0 :     OLDAPDetailsPage::OLDAPDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     659           0 :         :OCommonBehaviourTabPage(pParent, "LDAP", "dbaccess/ui/ldappage.ui", _rCoreAttrs, 0)
     660             :     {
     661           0 :         get(m_pETBaseDN, "baseDNEntry");
     662           0 :         get(m_pCBUseSSL, "useSSLCheckbutton");
     663           0 :         get(m_pNFPortNumber, "portNumberSpinbutton");
     664           0 :         m_pNFPortNumber->SetUseThousandSep(false);
     665           0 :         get(m_pNFRowCount, "LDAPRowCountspinbutton");
     666             : 
     667           0 :         m_pETBaseDN->SetModifyHdl(getControlModifiedLink());
     668           0 :         m_pCBUseSSL->SetToggleHdl(getControlModifiedLink());
     669           0 :         m_pNFPortNumber->SetModifyHdl(getControlModifiedLink());
     670           0 :         m_pNFRowCount->SetModifyHdl(getControlModifiedLink());
     671             : 
     672           0 :         m_pNFRowCount->SetUseThousandSep(false);
     673           0 :         m_iNormalPort = 389;
     674           0 :         m_iSSLPort    = 636;
     675           0 :         m_pCBUseSSL->SetClickHdl(LINK(this, OLDAPDetailsPage,OnCheckBoxClick));
     676           0 :     }
     677             : 
     678           0 :     OLDAPDetailsPage::~OLDAPDetailsPage()
     679             :     {
     680           0 :         disposeOnce();
     681           0 :     }
     682             : 
     683           0 :     void OLDAPDetailsPage::dispose()
     684             :     {
     685           0 :         m_pETBaseDN.clear();
     686           0 :         m_pCBUseSSL.clear();
     687           0 :         m_pNFPortNumber.clear();
     688           0 :         m_pNFRowCount.clear();
     689           0 :         OCommonBehaviourTabPage::dispose();
     690           0 :     }
     691             : 
     692           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateLDAP( vcl::Window* pParent, const SfxItemSet* _rAttrSet )
     693             :     {
     694           0 :         return VclPtr<OLDAPDetailsPage>::Create( pParent, *_rAttrSet );
     695             :     }
     696             : 
     697           0 :     bool OLDAPDetailsPage::FillItemSet( SfxItemSet* _rSet )
     698             :     {
     699           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(_rSet);
     700             : 
     701           0 :         fillString(*_rSet,m_pETBaseDN,DSID_CONN_LDAP_BASEDN,bChangedSomething);
     702           0 :         fillInt32(*_rSet,m_pNFPortNumber,DSID_CONN_LDAP_PORTNUMBER,bChangedSomething);
     703           0 :         fillInt32(*_rSet,m_pNFRowCount,DSID_CONN_LDAP_ROWCOUNT,bChangedSomething);
     704           0 :         fillBool(*_rSet,m_pCBUseSSL,DSID_CONN_LDAP_USESSL,bChangedSomething);
     705           0 :         return bChangedSomething;
     706             :     }
     707           0 :     IMPL_LINK( OLDAPDetailsPage, OnCheckBoxClick, CheckBox*, pCheckBox )
     708             :     {
     709           0 :         callModifiedHdl();
     710           0 :         if ( pCheckBox == m_pCBUseSSL)
     711             :         {
     712           0 :             if ( m_pCBUseSSL->IsChecked() )
     713             :             {
     714           0 :                 m_iNormalPort = static_cast<sal_Int32>(m_pNFPortNumber->GetValue());
     715           0 :                 m_pNFPortNumber->SetValue(m_iSSLPort);
     716             :             }
     717             :             else
     718             :             {
     719           0 :                 m_iSSLPort = static_cast<sal_Int32>(m_pNFPortNumber->GetValue());
     720           0 :                 m_pNFPortNumber->SetValue(m_iNormalPort);
     721             :             }
     722             :         }
     723           0 :         return 0;
     724             :     }
     725             : 
     726           0 :     void OLDAPDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     727             :     {
     728             :         // check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     729             :         bool bValid, bReadonly;
     730           0 :         getFlags(_rSet, bValid, bReadonly);
     731             : 
     732           0 :         SFX_ITEMSET_GET(_rSet, pBaseDN, SfxStringItem, DSID_CONN_LDAP_BASEDN, true);
     733           0 :         SFX_ITEMSET_GET(_rSet, pUseSSL, SfxBoolItem, DSID_CONN_LDAP_USESSL, true);
     734           0 :         SFX_ITEMSET_GET(_rSet, pPortNumber, SfxInt32Item, DSID_CONN_LDAP_PORTNUMBER, true);
     735           0 :         SFX_ITEMSET_GET(_rSet, pRowCount, SfxInt32Item, DSID_CONN_LDAP_ROWCOUNT, true);
     736             : 
     737           0 :         if ( bValid )
     738             :         {
     739           0 :             m_pETBaseDN->SetText(pBaseDN->GetValue());
     740           0 :             m_pNFPortNumber->SetValue(pPortNumber->GetValue());
     741           0 :             m_pNFRowCount->SetValue(pRowCount->GetValue());
     742           0 :             m_pCBUseSSL->Check(pUseSSL->GetValue());
     743             :         }
     744             : 
     745           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     746           0 :     }
     747             : 
     748             :     // OTextDetailsPage
     749           0 :     OTextDetailsPage::OTextDetailsPage( vcl::Window* pParent, const SfxItemSet& _rCoreAttrs )
     750           0 :         :OCommonBehaviourTabPage(pParent, "EmptyPage", "dbaccess/ui/emptypage.ui", _rCoreAttrs, 0)
     751             :     {
     752             : 
     753           0 :         m_pTextConnectionHelper = VclPtr<OTextConnectionHelper>::Create( get<VclVBox>("EmptyPage"), TC_EXTENSION | TC_HEADER | TC_SEPARATORS | TC_CHARSET );
     754           0 :     }
     755             : 
     756           0 :     OTextDetailsPage::~OTextDetailsPage()
     757             :     {
     758           0 :         disposeOnce();
     759           0 :     }
     760             : 
     761           0 :     void OTextDetailsPage::dispose()
     762             :     {
     763           0 :         m_pTextConnectionHelper.disposeAndClear();
     764           0 :         OCommonBehaviourTabPage::dispose();
     765           0 :     }
     766             : 
     767           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateText( vcl::Window* pParent,  const SfxItemSet* _rAttrSet )
     768             :     {
     769           0 :         return VclPtr<OTextDetailsPage>::Create( pParent, *_rAttrSet );
     770             :     }
     771           0 :     void OTextDetailsPage::fillControls(::std::vector< ISaveValueWrapper* >& _rControlList)
     772             :     {
     773           0 :         OCommonBehaviourTabPage::fillControls(_rControlList);
     774           0 :         m_pTextConnectionHelper->fillControls(_rControlList);
     775             : 
     776           0 :     }
     777           0 :     void OTextDetailsPage::fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList)
     778             :     {
     779           0 :         OCommonBehaviourTabPage::fillWindows(_rControlList);
     780           0 :         m_pTextConnectionHelper->fillWindows(_rControlList);
     781             : 
     782           0 :     }
     783           0 :     void OTextDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
     784             :     {
     785             :         // first check whether or not the selection is invalid or readonly (invalid implies readonly, but not vice versa)
     786             :         bool bValid, bReadonly;
     787           0 :         getFlags(_rSet, bValid, bReadonly);
     788             : 
     789           0 :         m_pTextConnectionHelper->implInitControls(_rSet, bValid);
     790           0 :         OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
     791           0 :     }
     792             : 
     793           0 :     bool OTextDetailsPage::FillItemSet( SfxItemSet* rSet )
     794             :     {
     795           0 :         bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(rSet);
     796           0 :         bChangedSomething = m_pTextConnectionHelper->FillItemSet(*rSet, bChangedSomething);
     797           0 :         return bChangedSomething;
     798             :     }
     799             : 
     800           0 :     bool OTextDetailsPage::prepareLeave()
     801             :     {
     802           0 :         return m_pTextConnectionHelper->prepareLeave();
     803             :     }
     804             : 
     805           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateGeneratedValuesPage( vcl::Window* _pParent, const SfxItemSet* _rAttrSet )
     806             :     {
     807           0 :         return VclPtr<GeneratedValuesPage>::Create( _pParent, *_rAttrSet );
     808             :     }
     809             : 
     810           0 :     VclPtr<SfxTabPage> ODriversSettings::CreateSpecialSettingsPage( vcl::Window* _pParent, const SfxItemSet* _rAttrSet )
     811             :     {
     812           0 :         OUString eType = ODbDataSourceAdministrationHelper::getDatasourceType( *_rAttrSet );
     813           0 :         DataSourceMetaData aMetaData( eType );
     814           0 :         return VclPtr<SpecialSettingsPage>::Create( _pParent, *_rAttrSet, aMetaData );
     815             :     }
     816          36 : }   // namespace dbaui
     817             : 
     818             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11