xref: /trunk/main/dbaccess/source/ui/dlg/ConnectionHelper.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef DBAUI_CONNECTIONHELPER_HXX
29 #define DBAUI_CONNECTIONHELPER_HXX
30 
31 #ifndef _DBAUI_ADMINPAGES_HXX_
32 #include "adminpages.hxx"
33 #endif
34 #ifndef _UCBHELPER_CONTENT_HXX
35 #include <ucbhelper/content.hxx>
36 #endif
37 #ifndef _DBAUI_CURLEDIT_HXX_
38 #include "curledit.hxx"
39 #endif
40 #ifndef _SFX_FILEDLGHELPER_HXX
41 #include <sfx2/filedlghelper.hxx>
42 #endif
43 
44 
45 #define FILL_STRING_ITEM(editcontrol, itemset, itemid, modifiedflag)    \
46     if (editcontrol.GetText() != editcontrol.GetSavedValue())           \
47     {                                                                   \
48         itemset.Put(SfxStringItem(itemid, editcontrol.GetText()));      \
49         modifiedflag = sal_True;                                        \
50     }
51 
52 //.........................................................................
53 namespace dbaui
54 {
55 //.........................................................................
56 
57     // #106016# --------------
58     enum IS_PATH_EXIST
59     {
60         PATH_NOT_EXIST = 0,
61         PATH_EXIST,
62         PATH_NOT_KNOWN
63     };
64 
65     class IDatabaseSettingsDialog;
66 
67     class OConnectionHelper : public OGenericAdministrationPage
68     {
69         sal_Bool            m_bUserGrabFocus : 1;
70 
71     public:
72         OConnectionHelper( Window* pParent, const ResId& _rId, const SfxItemSet& _rCoreAttrs);
73         virtual ~OConnectionHelper();
74         FixedText           m_aFT_Connection;
75         OConnectionURLEdit  m_aConnectionURL;
76         PushButton          m_aPB_Connection;
77         ::rtl::OUString     m_eType;          // the type can't be changed in this class, so we hold it as member.
78 
79     public:
80 
81         // setting/retrieving the current connection URL
82         // necessary because for some types, the URL must be decoded for display purposes
83         ::dbaccess::ODsnTypeCollection* m_pCollection;  /// the DSN type collection instance
84         virtual long    PreNotify( NotifyEvent& _rNEvt );
85 
86         // <method>OGenericAdministrationPage::fillControls</method>
87         virtual void    fillControls(::std::vector< ISaveValueWrapper* >& _rControlList);
88         // <method>OGenericAdministrationPage::fillWindows</method>
89         virtual void    fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList);
90         virtual void    implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
91 
92 
93         // setting/retrieving the current connection URL
94         // necessary because for some types, the URL must be decoded for display purposes
95         //String        getURL( OConnectionURLEdit* _m_pConnection ) const;
96         //void      setURL( const String& _rURL, OConnectionURLEdit* _m_pConnection );
97 
98         String      getURLNoPrefix( ) const;
99         void        setURLNoPrefix( const String& _rURL );
100 
101         /** checks if the path is existence
102             @param  _rURL
103                 The URL to check.
104         */
105         sal_Int32   checkPathExistence(const String& _rURL);
106 
107 
108         IS_PATH_EXIST   pathExists(const ::rtl::OUString& _rURL, sal_Bool bIsFile) const;
109         sal_Bool        createDirectoryDeep(const String& _rPathNormalized);
110         sal_Bool        commitURL();
111 
112         /** opens the FileOpen dialog and asks for a FileName
113             @param  _aFileOpen
114                 Executes the file open dialog, which must be filled from caller.
115         */
116         void askForFileName(::sfx2::FileDialogHelper& _aFileOpen);
117 
118         virtual void SetServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB)
119         {
120             OGenericAdministrationPage::SetServiceFactory(_rxORB);
121         }
122 
123     protected:
124         void            setURL( const String& _rURL );
125         virtual bool    checkTestConnection();
126 
127     private:
128         DECL_LINK(OnBrowseConnections, PushButton*);
129         StringBag   getInstalledAdabasDBDirs(const String &_rPath,const ::ucbhelper::ResultSetInclude& _reResultSetInclude);
130         StringBag   getInstalledAdabasDBs(const String &_rConfigDir,const String &_rWorkDir);
131         String      impl_getURL( sal_Bool _bPrefix ) const;
132         void        impl_setURL( const String& _rURL, sal_Bool _bPrefix );
133         void        implUpdateURLDependentStates() const;
134     };
135 
136 //.........................................................................
137 }   // namespace dbaui
138 //.........................................................................
139 
140 #endif // DBAUI_CONNECTIONHELPER_HXX
141