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: */
|