10b4ced1dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 30b4ced1dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 40b4ced1dSAndrew Rist * or more contributor license agreements. See the NOTICE file 50b4ced1dSAndrew Rist * distributed with this work for additional information 60b4ced1dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 70b4ced1dSAndrew Rist * to you under the Apache License, Version 2.0 (the 80b4ced1dSAndrew Rist * "License"); you may not use this file except in compliance 90b4ced1dSAndrew Rist * with the License. You may obtain a copy of the License at 100b4ced1dSAndrew Rist * 110b4ced1dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 120b4ced1dSAndrew Rist * 130b4ced1dSAndrew Rist * Unless required by applicable law or agreed to in writing, 140b4ced1dSAndrew Rist * software distributed under the License is distributed on an 150b4ced1dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 160b4ced1dSAndrew Rist * KIND, either express or implied. See the License for the 170b4ced1dSAndrew Rist * specific language governing permissions and limitations 180b4ced1dSAndrew Rist * under the License. 190b4ced1dSAndrew Rist * 200b4ced1dSAndrew Rist *************************************************************/ 210b4ced1dSAndrew Rist 220b4ced1dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir //______________________________________________________________________________________________________________ 25cdf0e10cSrcweir // includes of other projects 26cdf0e10cSrcweir //______________________________________________________________________________________________________________ 27cdf0e10cSrcweir 28cdf0e10cSrcweir #include <cppuhelper/factory.hxx> 29cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 30cdf0e10cSrcweir #include <com/sun/star/lang/XSingleServiceFactory.hpp> 31cdf0e10cSrcweir #include <com/sun/star/registry/XRegistryKey.hpp> 32cdf0e10cSrcweir #include <com/sun/star/container/XSet.hpp> 33cdf0e10cSrcweir 34cdf0e10cSrcweir #include <stdio.h> 35cdf0e10cSrcweir 36cdf0e10cSrcweir //______________________________________________________________________________________________________________ 37cdf0e10cSrcweir // includes of my own project 38cdf0e10cSrcweir //______________________________________________________________________________________________________________ 39cdf0e10cSrcweir 40cdf0e10cSrcweir //============================================================================= 41cdf0e10cSrcweir // Add new include line to use new services. 42cdf0e10cSrcweir //============================================================================= 43cdf0e10cSrcweir #include "framecontrol.hxx" 44cdf0e10cSrcweir #include "progressbar.hxx" 45cdf0e10cSrcweir #include "progressmonitor.hxx" 46cdf0e10cSrcweir #include "statusindicator.hxx" 47cdf0e10cSrcweir //============================================================================= 48cdf0e10cSrcweir 49cdf0e10cSrcweir //______________________________________________________________________________________________________________ 50cdf0e10cSrcweir // defines 51cdf0e10cSrcweir //______________________________________________________________________________________________________________ 52cdf0e10cSrcweir 53cdf0e10cSrcweir // If you will debug macros of this file ... you must define follow constant! 54*b4abecfeSPedro Giffuni // This switch on another macro AS_DBG_OUT(...), which will print text to "stdout". 55cdf0e10cSrcweir 56cdf0e10cSrcweir //#define AS_DBG_SWITCH 57cdf0e10cSrcweir 58cdf0e10cSrcweir //______________________________________________________________________________________________________________ 59cdf0e10cSrcweir // namespaces 60cdf0e10cSrcweir //______________________________________________________________________________________________________________ 61cdf0e10cSrcweir 62cdf0e10cSrcweir using namespace ::rtl ; 63cdf0e10cSrcweir using namespace ::cppu ; 64cdf0e10cSrcweir using namespace ::unocontrols ; 65cdf0e10cSrcweir using namespace ::com::sun::star::uno ; 66cdf0e10cSrcweir using namespace ::com::sun::star::container ; 67cdf0e10cSrcweir using namespace ::com::sun::star::lang ; 68cdf0e10cSrcweir using namespace ::com::sun::star::registry ; 69cdf0e10cSrcweir 70cdf0e10cSrcweir //______________________________________________________________________________________________________________ 71cdf0e10cSrcweir // macros 72cdf0e10cSrcweir //______________________________________________________________________________________________________________ 73cdf0e10cSrcweir 74cdf0e10cSrcweir //****************************************************************************************************************************** 75cdf0e10cSrcweir // See AS_DBG_SWITCH below !!! 76cdf0e10cSrcweir #ifdef AS_DBG_SWITCH 77cdf0e10cSrcweir #define AS_DBG_OUT(OUTPUT) printf( OUTPUT ); 78cdf0e10cSrcweir #else 79cdf0e10cSrcweir #define AS_DBG_OUT(OUTPUT) 80cdf0e10cSrcweir #endif 81cdf0e10cSrcweir 82cdf0e10cSrcweir //****************************************************************************************************************************** 83cdf0e10cSrcweir #define CREATEINSTANCE(CLASS) \ 84cdf0e10cSrcweir \ 85cdf0e10cSrcweir static Reference< XInterface > SAL_CALL CLASS##_createInstance ( const Reference< XMultiServiceFactory >& rServiceManager ) throw ( Exception ) \ 86cdf0e10cSrcweir { \ 87cdf0e10cSrcweir AS_DBG_OUT ( "\tCREATEINSTANCE():\tOK\n" ) \ 88cdf0e10cSrcweir return Reference< XInterface >( *(OWeakObject*)(new CLASS( rServiceManager )) ); \ 89cdf0e10cSrcweir } 90cdf0e10cSrcweir 91cdf0e10cSrcweir //****************************************************************************************************************************** 92cdf0e10cSrcweir #define CREATEFACTORY_ONEINSTANCE(CLASS) \ 93cdf0e10cSrcweir \ 94cdf0e10cSrcweir AS_DBG_OUT ( "\tCREATEFACTORY_ONEINSTANCE():\t[start]\n" ) \ 95cdf0e10cSrcweir /* Create right factory ... */ \ 96cdf0e10cSrcweir xFactory = Reference< XSingleServiceFactory > \ 97cdf0e10cSrcweir ( \ 98cdf0e10cSrcweir cppu::createOneInstanceFactory ( xServiceManager , \ 99cdf0e10cSrcweir CLASS::impl_getStaticImplementationName () , \ 100cdf0e10cSrcweir CLASS##_createInstance , \ 101cdf0e10cSrcweir CLASS::impl_getStaticSupportedServiceNames () ) \ 102cdf0e10cSrcweir ) ; \ 103cdf0e10cSrcweir AS_DBG_OUT ( "\tCREATEFACTORY_ONEINSTANCE():\t[end]\n" ) 104cdf0e10cSrcweir 105cdf0e10cSrcweir //****************************************************************************************************************************** 106cdf0e10cSrcweir #define CREATEFACTORY_SINGLE(CLASS) \ 107cdf0e10cSrcweir \ 108cdf0e10cSrcweir AS_DBG_OUT ( "\tCREATEFACTORY_SINGLE():\t[start]\n" ) \ 109cdf0e10cSrcweir /* Create right factory ... */ \ 110cdf0e10cSrcweir xFactory = Reference< XSingleServiceFactory > \ 111cdf0e10cSrcweir ( \ 112cdf0e10cSrcweir cppu::createSingleFactory ( xServiceManager , \ 113cdf0e10cSrcweir CLASS::impl_getStaticImplementationName () , \ 114cdf0e10cSrcweir CLASS##_createInstance , \ 115cdf0e10cSrcweir CLASS::impl_getStaticSupportedServiceNames () ) \ 116cdf0e10cSrcweir ) ; \ 117cdf0e10cSrcweir AS_DBG_OUT ( "\tCREATEFACTORY_SINGLE():\t[end]\n" ) 118cdf0e10cSrcweir 119cdf0e10cSrcweir //****************************************************************************************************************************** 120cdf0e10cSrcweir #define IF_NAME_CREATECOMPONENTFACTORY_ONEINSTANCE(CLASS) \ 121cdf0e10cSrcweir \ 122cdf0e10cSrcweir if ( CLASS::impl_getStaticImplementationName().equals( OUString::createFromAscii( pImplementationName ) ) ) \ 123cdf0e10cSrcweir { \ 124cdf0e10cSrcweir AS_DBG_OUT ( "\tIF_NAME_CREATECOMPONENTFACTORY_ONEINSTANCE():\timplementationname found\n" ) \ 125cdf0e10cSrcweir CREATEFACTORY_ONEINSTANCE ( CLASS ) \ 126cdf0e10cSrcweir } 127cdf0e10cSrcweir 128cdf0e10cSrcweir //****************************************************************************************************************************** 129cdf0e10cSrcweir #define IF_NAME_CREATECOMPONENTFACTORY_SINGLE(CLASS) \ 130cdf0e10cSrcweir \ 131cdf0e10cSrcweir if ( CLASS::impl_getStaticImplementationName().equals( OUString::createFromAscii( pImplementationName ) ) ) \ 132cdf0e10cSrcweir { \ 133cdf0e10cSrcweir AS_DBG_OUT ( "\tIF_NAME_CREATECOMPONENTFACTORY_SINGLE():\timplementationname found\n" ) \ 134cdf0e10cSrcweir CREATEFACTORY_SINGLE ( CLASS ) \ 135cdf0e10cSrcweir } 136cdf0e10cSrcweir 137cdf0e10cSrcweir //______________________________________________________________________________________________________________ 138cdf0e10cSrcweir // declare functions to create a new instance of service 139cdf0e10cSrcweir //______________________________________________________________________________________________________________ 140cdf0e10cSrcweir 141cdf0e10cSrcweir //============================================================================= 142cdf0e10cSrcweir // Add new macro line to use new services. 143cdf0e10cSrcweir // 144cdf0e10cSrcweir // !!! ATTENTION !!! 145cdf0e10cSrcweir // Write no ";" at end of line! (see macro) 146cdf0e10cSrcweir //============================================================================= 147cdf0e10cSrcweir CREATEINSTANCE ( FrameControl ) 148cdf0e10cSrcweir CREATEINSTANCE ( ProgressBar ) 149cdf0e10cSrcweir CREATEINSTANCE ( ProgressMonitor ) 150cdf0e10cSrcweir CREATEINSTANCE ( StatusIndicator ) 151cdf0e10cSrcweir //============================================================================= 152cdf0e10cSrcweir 153cdf0e10cSrcweir //______________________________________________________________________________________________________________ 154cdf0e10cSrcweir // return environment 155cdf0e10cSrcweir //______________________________________________________________________________________________________________ 156cdf0e10cSrcweir 157cdf0e10cSrcweir extern "C" void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvironmentTypeName , 158cdf0e10cSrcweir uno_Environment** /*ppEnvironment*/ ) 159cdf0e10cSrcweir { 160cdf0e10cSrcweir *ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ; 161cdf0e10cSrcweir } 162cdf0e10cSrcweir 163cdf0e10cSrcweir //______________________________________________________________________________________________________________ 164cdf0e10cSrcweir // create right component factory 165cdf0e10cSrcweir //______________________________________________________________________________________________________________ 166cdf0e10cSrcweir 167cdf0e10cSrcweir extern "C" void* SAL_CALL component_getFactory( const sal_Char* pImplementationName , 168cdf0e10cSrcweir void* pServiceManager , 169cdf0e10cSrcweir void* /*pRegistryKey*/ ) 170cdf0e10cSrcweir { 171cdf0e10cSrcweir AS_DBG_OUT( "component_getFactory():\t[start]\n" ) 172cdf0e10cSrcweir 173cdf0e10cSrcweir // Set default return value for this operation - if it failed. 174cdf0e10cSrcweir void* pReturn = NULL ; 175cdf0e10cSrcweir 176cdf0e10cSrcweir if ( 177cdf0e10cSrcweir ( pImplementationName != NULL ) && 178cdf0e10cSrcweir ( pServiceManager != NULL ) 179cdf0e10cSrcweir ) 180cdf0e10cSrcweir { 181cdf0e10cSrcweir AS_DBG_OUT( "component_getFactory():\t\t... enter scope - pointer are valid\n" ) 182cdf0e10cSrcweir 183cdf0e10cSrcweir // Define variables which are used in following macros. 184cdf0e10cSrcweir Reference< XSingleServiceFactory > xFactory ; 185cdf0e10cSrcweir Reference< XMultiServiceFactory > xServiceManager( reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ; 186cdf0e10cSrcweir 187cdf0e10cSrcweir //============================================================================= 188cdf0e10cSrcweir // Add new macro line to handle new service. 189cdf0e10cSrcweir // 190cdf0e10cSrcweir // !!! ATTENTION !!! 191cdf0e10cSrcweir // Write no ";" at end of line and dont forget "else" ! (see macro) 192cdf0e10cSrcweir //============================================================================= 193cdf0e10cSrcweir IF_NAME_CREATECOMPONENTFACTORY_SINGLE( FrameControl ) 194cdf0e10cSrcweir else 195cdf0e10cSrcweir IF_NAME_CREATECOMPONENTFACTORY_SINGLE( ProgressBar ) 196cdf0e10cSrcweir else 197cdf0e10cSrcweir IF_NAME_CREATECOMPONENTFACTORY_SINGLE( ProgressMonitor ) 198cdf0e10cSrcweir else 199cdf0e10cSrcweir IF_NAME_CREATECOMPONENTFACTORY_SINGLE( StatusIndicator ) 200cdf0e10cSrcweir //============================================================================= 201cdf0e10cSrcweir 202cdf0e10cSrcweir // Factory is valid - service was found. 203cdf0e10cSrcweir if ( xFactory.is() ) 204cdf0e10cSrcweir { 205cdf0e10cSrcweir AS_DBG_OUT( "component_getFactory():\t\t\t... xFactory valid - service was found\n" ) 206cdf0e10cSrcweir 207cdf0e10cSrcweir xFactory->acquire(); 208cdf0e10cSrcweir pReturn = xFactory.get(); 209cdf0e10cSrcweir } 210cdf0e10cSrcweir 211cdf0e10cSrcweir AS_DBG_OUT( "component_getFactory():\t\t... leave scope\n" ) 212cdf0e10cSrcweir } 213cdf0e10cSrcweir 214cdf0e10cSrcweir AS_DBG_OUT ( "component_getFactory():\t[end]\n" ) 215cdf0e10cSrcweir 216cdf0e10cSrcweir // Return with result of this operation. 217cdf0e10cSrcweir return pReturn ; 218cdf0e10cSrcweir } 219