xref: /aoo4110/main/svtools/source/config/test/test.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svtools.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
28*b1cdbd2cSJim Jagielski //  switches
29*b1cdbd2cSJim Jagielski //  use it to enable test szenarios
30*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski #define TEST_DYNAMICMENUOPTIONS
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
35*b1cdbd2cSJim Jagielski //	my own includes
36*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski #include <unotools/dynamicmenuoptions.hxx>
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
41*b1cdbd2cSJim Jagielski //	interface includes
42*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
43*b1cdbd2cSJim Jagielski #include <cppuhelper/bootstrap.hxx>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XInitialization.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/registry/XSimpleRegistry.hpp>
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
49*b1cdbd2cSJim Jagielski //	other includes
50*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_PROCESSFACTORY_HXX_
53*b1cdbd2cSJim Jagielski #include <comphelper/regpathhelper.hxx>
54*b1cdbd2cSJim Jagielski #endif
55*b1cdbd2cSJim Jagielski #include <cppuhelper/servicefactory.hxx>
56*b1cdbd2cSJim Jagielski #include <cppuhelper/bootstrap.hxx>
57*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
58*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Reference.h>
59*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Sequence.h>
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski #ifndef _RTL_USTRING_
62*b1cdbd2cSJim Jagielski #include <rtl/ustring>
63*b1cdbd2cSJim Jagielski #endif
64*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
65*b1cdbd2cSJim Jagielski #include <osl/diagnose.h>
66*b1cdbd2cSJim Jagielski #include <osl/mutex.hxx>
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski /*
69*b1cdbd2cSJim Jagielski #include <svtools/unoiface.hxx>
70*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
71*b1cdbd2cSJim Jagielski */
72*b1cdbd2cSJim Jagielski #include <vcl/event.hxx>
73*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
74*b1cdbd2cSJim Jagielski #include <vcl/wrkwin.hxx>
75*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
76*b1cdbd2cSJim Jagielski #include <stdio.h>
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
79*b1cdbd2cSJim Jagielski //	const
80*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
83*b1cdbd2cSJim Jagielski //	namespace
84*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski using namespace ::rtl						;
87*b1cdbd2cSJim Jagielski using namespace ::osl                       ;
88*b1cdbd2cSJim Jagielski using namespace ::comphelper				;
89*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno		;
90*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang      ;
91*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans     ;
92*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::registry  ;
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
95*b1cdbd2cSJim Jagielski //	defines
96*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski #define ASCII( STEXT )                      OUString( RTL_CONSTASCII_USTRINGPARAM( STEXT ))
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski #define SERVICENAME_SIMPLEREGISTRY          OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.registry.SimpleRegistry" ))
101*b1cdbd2cSJim Jagielski #define SERVICENAME_NESTEDREGISTRY          OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.registry.NestedRegistry" ))
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
104*b1cdbd2cSJim Jagielski //	declarations
105*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski class TestApplication : public Application
108*b1cdbd2cSJim Jagielski {
109*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
110*b1cdbd2cSJim Jagielski     // interface
111*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
112*b1cdbd2cSJim Jagielski 	public:
113*b1cdbd2cSJim Jagielski 		void Main();
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
116*b1cdbd2cSJim Jagielski     // test methods
117*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
118*b1cdbd2cSJim Jagielski     private:
119*b1cdbd2cSJim Jagielski         void impl_testDynamicMenuOptions();
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski     //*************************************************************************************************************
122*b1cdbd2cSJim Jagielski     // helper methods
123*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
124*b1cdbd2cSJim Jagielski     private:
125*b1cdbd2cSJim Jagielski         static Reference< XMultiServiceFactory > getUNOServiceManager();
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
128*b1cdbd2cSJim Jagielski     // member
129*b1cdbd2cSJim Jagielski 	//*************************************************************************************************************
130*b1cdbd2cSJim Jagielski 	private:
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski };	//	class TestApplication
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
135*b1cdbd2cSJim Jagielski //	global variables
136*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski TestApplication	aTestApplication ;
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
141*b1cdbd2cSJim Jagielski //	main
142*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
143*b1cdbd2cSJim Jagielski 
Main()144*b1cdbd2cSJim Jagielski void TestApplication::Main()
145*b1cdbd2cSJim Jagielski {
146*b1cdbd2cSJim Jagielski 	/**-***********************************************************************************************************
147*b1cdbd2cSJim Jagielski 		initialize program
148*b1cdbd2cSJim Jagielski 	**************************************************************************************************************/
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski     // Init global servicemanager and set it for external services.
151*b1cdbd2cSJim Jagielski     ::comphelper::setProcessServiceFactory( TestApplication::getUNOServiceManager() );
152*b1cdbd2cSJim Jagielski 	// Control sucess of operation.
153*b1cdbd2cSJim Jagielski     OSL_ENSURE( !(::comphelper::getProcessServiceFactory()!=TestApplication::getUNOServiceManager()), "TestApplication::Main()\nGlobal servicemanager not right initialized.\n" );
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski 	/**-***********************************************************************************************************
156*b1cdbd2cSJim Jagielski 		test area
157*b1cdbd2cSJim Jagielski 	**************************************************************************************************************/
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski     #ifdef TEST_DYNAMICMENUOPTIONS
160*b1cdbd2cSJim Jagielski         impl_testDynamicMenuOptions();
161*b1cdbd2cSJim Jagielski     #endif
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski //	Execute();
164*b1cdbd2cSJim Jagielski     OSL_ENSURE( sal_False, "Test was successful!\n" );
165*b1cdbd2cSJim Jagielski }
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski //*****************************************************************************************************************
168*b1cdbd2cSJim Jagielski // test configuration of dynamic menus "New" and "Wizard"
169*b1cdbd2cSJim Jagielski //*****************************************************************************************************************
impl_testDynamicMenuOptions()170*b1cdbd2cSJim Jagielski void TestApplication::impl_testDynamicMenuOptions()
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski     SvtDynamicMenuOptions aCFG;
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski     // Test:
175*b1cdbd2cSJim Jagielski     //      read menus
176*b1cdbd2cSJim Jagielski     //      if( menus == empty )
177*b1cdbd2cSJim Jagielski     //      {
178*b1cdbd2cSJim Jagielski     //          fill it with samples
179*b1cdbd2cSJim Jagielski     //          read it again
180*b1cdbd2cSJim Jagielski     //      }
181*b1cdbd2cSJim Jagielski     //      output content
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski     Sequence< Sequence< PropertyValue > > lNewMenu    = aCFG.GetMenu( E_NEWMENU    );
184*b1cdbd2cSJim Jagielski     Sequence< Sequence< PropertyValue > > lWizardMenu = aCFG.GetMenu( E_WIZARDMENU );
185*b1cdbd2cSJim Jagielski 
186*b1cdbd2cSJim Jagielski     if( lNewMenu.getLength() < 1 )
187*b1cdbd2cSJim Jagielski     {
188*b1cdbd2cSJim Jagielski         aCFG.AppendItem( E_NEWMENU, ASCII("private:factory/swriter"), ASCII("new writer"), ASCII("icon_writer"), ASCII("_blank") );
189*b1cdbd2cSJim Jagielski         aCFG.AppendItem( E_NEWMENU, ASCII("private:factory/scalc"  ), ASCII("new calc"  ), ASCII("icon_calc"  ), ASCII("_blank") );
190*b1cdbd2cSJim Jagielski         aCFG.AppendItem( E_NEWMENU, ASCII("private:factory/sdraw"  ), ASCII("new draw"  ), ASCII("icon_draw"  ), ASCII("_blank") );
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski         lNewMenu = aCFG.GetMenu( E_NEWMENU );
193*b1cdbd2cSJim Jagielski     }
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski     if( lWizardMenu.getLength() < 1 )
196*b1cdbd2cSJim Jagielski     {
197*b1cdbd2cSJim Jagielski         aCFG.AppendItem( E_WIZARDMENU, ASCII("file://a"), ASCII("system file"), ASCII("icon_file"), ASCII("_self") );
198*b1cdbd2cSJim Jagielski         aCFG.AppendItem( E_WIZARDMENU, ASCII("ftp://b" ), ASCII("ftp host"   ), ASCII("icon_ftp" ), ASCII("_self") );
199*b1cdbd2cSJim Jagielski         aCFG.AppendItem( E_WIZARDMENU, ASCII("http://c"), ASCII("www"        ), ASCII("icon_www" ), ASCII("_self") );
200*b1cdbd2cSJim Jagielski 
201*b1cdbd2cSJim Jagielski         lWizardMenu = aCFG.GetMenu( E_WIZARDMENU );
202*b1cdbd2cSJim Jagielski     }
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski     sal_uInt32     nItemCount    ;
205*b1cdbd2cSJim Jagielski     sal_uInt32     nItem         ;
206*b1cdbd2cSJim Jagielski     sal_uInt32     nPropertyCount;
207*b1cdbd2cSJim Jagielski     sal_uInt32     nProperty     ;
208*b1cdbd2cSJim Jagielski     OUString       sPropertyValue;
209*b1cdbd2cSJim Jagielski     OUStringBuffer sOut( 5000 )  ;
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski     nItemCount = lNewMenu.getLength();
212*b1cdbd2cSJim Jagielski     for( nItem=0; nItem<nItemCount; ++nItem )
213*b1cdbd2cSJim Jagielski     {
214*b1cdbd2cSJim Jagielski         nPropertyCount = lNewMenu[nItem].getLength();
215*b1cdbd2cSJim Jagielski         for( nProperty=0; nProperty<nPropertyCount; ++nProperty )
216*b1cdbd2cSJim Jagielski         {
217*b1cdbd2cSJim Jagielski             lNewMenu[nItem][nProperty].Value >>= sPropertyValue;
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski             sOut.appendAscii ( "New/"                            );
220*b1cdbd2cSJim Jagielski             sOut.append      ( (sal_Int32)nItem                  );
221*b1cdbd2cSJim Jagielski             sOut.appendAscii ( "/"                               );
222*b1cdbd2cSJim Jagielski             sOut.append      ( lNewMenu[nItem][nProperty].Name   );
223*b1cdbd2cSJim Jagielski             sOut.appendAscii ( " = "                             );
224*b1cdbd2cSJim Jagielski             sOut.append      ( sPropertyValue                    );
225*b1cdbd2cSJim Jagielski             sOut.appendAscii ( "\n"                              );
226*b1cdbd2cSJim Jagielski         }
227*b1cdbd2cSJim Jagielski     }
228*b1cdbd2cSJim Jagielski 
229*b1cdbd2cSJim Jagielski     sOut.appendAscii("\n--------------------------------------\n");
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski     nItemCount = lWizardMenu.getLength();
232*b1cdbd2cSJim Jagielski     for( nItem=0; nItem<nItemCount; ++nItem )
233*b1cdbd2cSJim Jagielski     {
234*b1cdbd2cSJim Jagielski         nPropertyCount = lNewMenu[nItem].getLength();
235*b1cdbd2cSJim Jagielski         for( nProperty=0; nProperty<nPropertyCount; ++nProperty )
236*b1cdbd2cSJim Jagielski         {
237*b1cdbd2cSJim Jagielski             lWizardMenu[nItem][nProperty].Value >>= sPropertyValue;
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski             sOut.appendAscii ( "Wizard/"                         );
240*b1cdbd2cSJim Jagielski             sOut.append      ( (sal_Int32)nItem                  );
241*b1cdbd2cSJim Jagielski             sOut.appendAscii ( "/"                               );
242*b1cdbd2cSJim Jagielski             sOut.append      ( lNewMenu[nItem][nProperty].Name   );
243*b1cdbd2cSJim Jagielski             sOut.appendAscii ( " = "                             );
244*b1cdbd2cSJim Jagielski             sOut.append      ( sPropertyValue                    );
245*b1cdbd2cSJim Jagielski             sOut.appendAscii ( "\n"                              );
246*b1cdbd2cSJim Jagielski         }
247*b1cdbd2cSJim Jagielski     }
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski     OSL_ENSURE( sal_False, OUStringToOString( sOut.makeStringAndClear(), RTL_TEXTENCODING_UTF8 ).getStr() );
250*b1cdbd2cSJim Jagielski }
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski //*****************************************************************************************************************
253*b1cdbd2cSJim Jagielski // create new uno servicemanager by using normall applicat.rdb and user.rdb of an office installation!
254*b1cdbd2cSJim Jagielski // Don't use this application at same time like the office!
255*b1cdbd2cSJim Jagielski //*****************************************************************************************************************
getUNOServiceManager()256*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > TestApplication::getUNOServiceManager()
257*b1cdbd2cSJim Jagielski {
258*b1cdbd2cSJim Jagielski     static Reference< XMultiServiceFactory > smgr;
259*b1cdbd2cSJim Jagielski     if( ! smgr.is() )
260*b1cdbd2cSJim Jagielski     {
261*b1cdbd2cSJim Jagielski         Reference< XComponentContext > rCtx =
262*b1cdbd2cSJim Jagielski             cppu::defaultBootstrap_InitialComponentContext();
263*b1cdbd2cSJim Jagielski         smgr = Reference< XMultiServiceFactory > ( rCtx->getServiceManager() , UNO_QUERY );
264*b1cdbd2cSJim Jagielski     }
265*b1cdbd2cSJim Jagielski     return smgr;
266*b1cdbd2cSJim Jagielski }
267