1*d119d52dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*d119d52dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*d119d52dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*d119d52dSAndrew Rist * distributed with this work for additional information 6*d119d52dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*d119d52dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*d119d52dSAndrew Rist * "License"); you may not use this file except in compliance 9*d119d52dSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*d119d52dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*d119d52dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*d119d52dSAndrew Rist * software distributed under the License is distributed on an 15*d119d52dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*d119d52dSAndrew Rist * KIND, either express or implied. See the License for the 17*d119d52dSAndrew Rist * specific language governing permissions and limitations 18*d119d52dSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*d119d52dSAndrew Rist *************************************************************/ 21*d119d52dSAndrew Rist 22*d119d52dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sfx2.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir 28cdf0e10cSrcweir #ifdef WNT 29cdf0e10cSrcweir #ifdef _MSC_VER 30cdf0e10cSrcweir #pragma warning(disable:4917) 31cdf0e10cSrcweir #endif 32cdf0e10cSrcweir #include <shlobj.h> 33cdf0e10cSrcweir 34cdf0e10cSrcweir static bool _SHGetSpecialFolderW32( int nFolderID, WCHAR* pszFolder, int nSize ) 35cdf0e10cSrcweir { 36cdf0e10cSrcweir LPITEMIDLIST pidl; 37cdf0e10cSrcweir HRESULT hHdl = SHGetSpecialFolderLocation( NULL, nFolderID, &pidl ); 38cdf0e10cSrcweir 39cdf0e10cSrcweir if( hHdl == NOERROR ) 40cdf0e10cSrcweir { 41cdf0e10cSrcweir WCHAR *lpFolder = static_cast< WCHAR* >( HeapAlloc( GetProcessHeap(), 0, 16000 )); 42cdf0e10cSrcweir 43cdf0e10cSrcweir SHGetPathFromIDListW( pidl, lpFolder ); 44cdf0e10cSrcweir wcsncpy( pszFolder, lpFolder, nSize ); 45cdf0e10cSrcweir 46cdf0e10cSrcweir HeapFree( GetProcessHeap(), 0, lpFolder ); 47cdf0e10cSrcweir IMalloc *pMalloc; 48cdf0e10cSrcweir if( NOERROR == SHGetMalloc(&pMalloc) ) 49cdf0e10cSrcweir { 50cdf0e10cSrcweir pMalloc->Free( pidl ); 51cdf0e10cSrcweir pMalloc->Release(); 52cdf0e10cSrcweir } 53cdf0e10cSrcweir } 54cdf0e10cSrcweir return true; 55cdf0e10cSrcweir } 56cdf0e10cSrcweir 57cdf0e10cSrcweir #endif 58cdf0e10cSrcweir 59cdf0e10cSrcweir // Copied from sal/types.h to circumvent problems with precompiled headers 60cdf0e10cSrcweir // and redefinitions of BOOL, INT32 and other types. Unfortunately tools 61cdf0e10cSrcweir // also define these type incompatible with Win32 types which leads from 62cdf0e10cSrcweir // time to time to very nasty compilation errors. If someone finds a better 63cdf0e10cSrcweir // way to solve these probs please remove this copied part! 64cdf0e10cSrcweir typedef unsigned short sal_uInt16; 65cdf0e10cSrcweir #if ( defined(WIN32) && !defined(__MINGW32__) ) 66cdf0e10cSrcweir typedef wchar_t sal_Unicode; 67cdf0e10cSrcweir #else 68cdf0e10cSrcweir typedef sal_uInt16 sal_Unicode; 69cdf0e10cSrcweir #endif 70cdf0e10cSrcweir 71cdf0e10cSrcweir extern "C" bool GetUserTemplateLocation(sal_Unicode* pFolder, int nSize) 72cdf0e10cSrcweir { 73cdf0e10cSrcweir #ifdef WNT 74cdf0e10cSrcweir return _SHGetSpecialFolderW32( CSIDL_TEMPLATES, reinterpret_cast<LPWSTR>(pFolder), nSize ); 75cdf0e10cSrcweir #else 76cdf0e10cSrcweir (void)pFolder; 77cdf0e10cSrcweir (void)nSize; 78cdf0e10cSrcweir return false; 79cdf0e10cSrcweir #endif 80cdf0e10cSrcweir } 81