xref: /AOO41X/main/dbaccess/source/ui/dlg/ConnectionHelper.hxx (revision 2e2212a7c22e96cf6f6fab0dd042c34a45a64bd6)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef DBAUI_CONNECTIONHELPER_HXX
25 #define DBAUI_CONNECTIONHELPER_HXX
26 
27 #ifndef _DBAUI_ADMINPAGES_HXX_
28 #include "adminpages.hxx"
29 #endif
30 #ifndef _UCBHELPER_CONTENT_HXX
31 #include <ucbhelper/content.hxx>
32 #endif
33 #ifndef _DBAUI_CURLEDIT_HXX_
34 #include "curledit.hxx"
35 #endif
36 #ifndef _SFX_FILEDLGHELPER_HXX
37 #include <sfx2/filedlghelper.hxx>
38 #endif
39 
40 
41 #define FILL_STRING_ITEM(editcontrol, itemset, itemid, modifiedflag)    \
42     if (editcontrol.GetText() != editcontrol.GetSavedValue())           \
43     {                                                                   \
44         itemset.Put(SfxStringItem(itemid, editcontrol.GetText()));      \
45         modifiedflag = sal_True;                                        \
46     }
47 
48 //.........................................................................
49 namespace dbaui
50 {
51 //.........................................................................
52 
53     // #106016# --------------
54     enum IS_PATH_EXIST
55     {
56         PATH_NOT_EXIST = 0,
57         PATH_EXIST,
58         PATH_NOT_KNOWN
59     };
60 
61     class IDatabaseSettingsDialog;
62 
63     class OConnectionHelper : public OGenericAdministrationPage
64     {
65         sal_Bool            m_bUserGrabFocus : 1;
66 
67     public:
68         OConnectionHelper( Window* pParent, const ResId& _rId, const SfxItemSet& _rCoreAttrs);
69         virtual ~OConnectionHelper();
70         FixedText           m_aFT_Connection;
71         OConnectionURLEdit  m_aConnectionURL;
72         PushButton          m_aPB_Connection;
73         ::rtl::OUString     m_eType;          // the type can't be changed in this class, so we hold it as member.
74 
75     public:
76 
77         // setting/retrieving the current connection URL
78         // necessary because for some types, the URL must be decoded for display purposes
79         ::dbaccess::ODsnTypeCollection* m_pCollection;  /// the DSN type collection instance
80         virtual long    PreNotify( NotifyEvent& _rNEvt );
81 
82         // <method>OGenericAdministrationPage::fillControls</method>
83         virtual void    fillControls(::std::vector< ISaveValueWrapper* >& _rControlList);
84         // <method>OGenericAdministrationPage::fillWindows</method>
85         virtual void    fillWindows(::std::vector< ISaveValueWrapper* >& _rControlList);
86         virtual void    implInitControls(const SfxItemSet& _rSet, sal_Bool _bSaveValue);
87 
88 
89         // setting/retrieving the current connection URL
90         // necessary because for some types, the URL must be decoded for display purposes
91         //String        getURL( OConnectionURLEdit* _m_pConnection ) const;
92         //void      setURL( const String& _rURL, OConnectionURLEdit* _m_pConnection );
93 
94         String      getURLNoPrefix( ) const;
95         void        setURLNoPrefix( const String& _rURL );
96 
97         /** checks if the path is existence
98             @param  _rURL
99                 The URL to check.
100         */
101         sal_Int32   checkPathExistence(const String& _rURL);
102 
103 
104         IS_PATH_EXIST   pathExists(const ::rtl::OUString& _rURL, sal_Bool bIsFile) const;
105         sal_Bool        createDirectoryDeep(const String& _rPathNormalized);
106         sal_Bool        commitURL();
107 
108         /** opens the FileOpen dialog and asks for a FileName
109             @param  _aFileOpen
110                 Executes the file open dialog, which must be filled from caller.
111         */
112         void askForFileName(::sfx2::FileDialogHelper& _aFileOpen);
113 
SetServiceFactory(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> _rxORB)114         virtual void SetServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > _rxORB)
115         {
116             OGenericAdministrationPage::SetServiceFactory(_rxORB);
117         }
118 
119     protected:
120         void            setURL( const String& _rURL );
121         virtual bool    checkTestConnection();
122 
123     private:
124         DECL_LINK(OnBrowseConnections, PushButton*);
125         StringBag   getInstalledAdabasDBDirs(const String &_rPath,const ::ucbhelper::ResultSetInclude& _reResultSetInclude);
126         StringBag   getInstalledAdabasDBs(const String &_rConfigDir,const String &_rWorkDir);
127         String      impl_getURL( sal_Bool _bPrefix ) const;
128         void        impl_setURL( const String& _rURL, sal_Bool _bPrefix );
129         void        implUpdateURLDependentStates() const;
130     };
131 
132 //.........................................................................
133 }   // namespace dbaui
134 //.........................................................................
135 
136 #endif // DBAUI_CONNECTIONHELPER_HXX
137