1*f6e50924SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*f6e50924SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*f6e50924SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*f6e50924SAndrew Rist * distributed with this work for additional information 6*f6e50924SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*f6e50924SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*f6e50924SAndrew Rist * "License"); you may not use this file except in compliance 9*f6e50924SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*f6e50924SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*f6e50924SAndrew Rist * software distributed under the License is distributed on an 15*f6e50924SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*f6e50924SAndrew Rist * KIND, either express or implied. See the License for the 17*f6e50924SAndrew Rist * specific language governing permissions and limitations 18*f6e50924SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*f6e50924SAndrew Rist *************************************************************/ 21*f6e50924SAndrew Rist 22*f6e50924SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_svx.hxx" 26cdf0e10cSrcweir #include "gridcols.hxx" 27cdf0e10cSrcweir #include <tools/debug.hxx> 28cdf0e10cSrcweir #include <comphelper/types.hxx> 29cdf0e10cSrcweir #include "fmservs.hxx" 30cdf0e10cSrcweir #include "svx/fmtools.hxx" 31cdf0e10cSrcweir using namespace ::com::sun::star::uno; 32cdf0e10cSrcweir 33cdf0e10cSrcweir //------------------------------------------------------------------------------ 34cdf0e10cSrcweir const ::comphelper::StringSequence& getColumnTypes() 35cdf0e10cSrcweir { 36cdf0e10cSrcweir static ::comphelper::StringSequence aColumnTypes(10); 37cdf0e10cSrcweir if (!aColumnTypes.getConstArray()[0].getLength()) 38cdf0e10cSrcweir { 39cdf0e10cSrcweir ::rtl::OUString* pNames = aColumnTypes.getArray(); 40cdf0e10cSrcweir pNames[TYPE_CHECKBOX] = FM_COL_CHECKBOX; 41cdf0e10cSrcweir pNames[TYPE_COMBOBOX] = FM_COL_COMBOBOX; 42cdf0e10cSrcweir pNames[TYPE_CURRENCYFIELD] = FM_COL_CURRENCYFIELD; 43cdf0e10cSrcweir pNames[TYPE_DATEFIELD] = FM_COL_DATEFIELD; 44cdf0e10cSrcweir pNames[TYPE_FORMATTEDFIELD] = FM_COL_FORMATTEDFIELD; 45cdf0e10cSrcweir pNames[TYPE_LISTBOX] = FM_COL_LISTBOX; 46cdf0e10cSrcweir pNames[TYPE_NUMERICFIELD] = FM_COL_NUMERICFIELD; 47cdf0e10cSrcweir pNames[TYPE_PATTERNFIELD] = FM_COL_PATTERNFIELD; 48cdf0e10cSrcweir pNames[TYPE_TEXTFIELD] = FM_COL_TEXTFIELD; 49cdf0e10cSrcweir pNames[TYPE_TIMEFIELD] = FM_COL_TIMEFIELD; 50cdf0e10cSrcweir } 51cdf0e10cSrcweir return aColumnTypes; 52cdf0e10cSrcweir } 53cdf0e10cSrcweir 54cdf0e10cSrcweir //------------------------------------------------------------------ 55cdf0e10cSrcweir // Vergleichen von PropertyInfo 56cdf0e10cSrcweir extern "C" int 57cdf0e10cSrcweir #if defined( WNT ) 58cdf0e10cSrcweir __cdecl 59cdf0e10cSrcweir #endif 60cdf0e10cSrcweir #if defined( ICC ) && defined( OS2 ) 61cdf0e10cSrcweir _Optlink 62cdf0e10cSrcweir #endif 63cdf0e10cSrcweir NameCompare(const void* pFirst, const void* pSecond) 64cdf0e10cSrcweir { 65cdf0e10cSrcweir return ((::rtl::OUString*)pFirst)->compareTo(*(::rtl::OUString*)pSecond); 66cdf0e10cSrcweir } 67cdf0e10cSrcweir 68cdf0e10cSrcweir namespace 69cdf0e10cSrcweir { 70cdf0e10cSrcweir //------------------------------------------------------------------------------ 71cdf0e10cSrcweir sal_Int32 lcl_findPos(const ::rtl::OUString& aStr, const Sequence< ::rtl::OUString>& rList) 72cdf0e10cSrcweir { 73cdf0e10cSrcweir const ::rtl::OUString* pStrList = rList.getConstArray(); 74cdf0e10cSrcweir ::rtl::OUString* pResult = (::rtl::OUString*) bsearch(&aStr, (void*)pStrList, rList.getLength(), sizeof(::rtl::OUString), 75cdf0e10cSrcweir &NameCompare); 76cdf0e10cSrcweir 77cdf0e10cSrcweir if (pResult) 78cdf0e10cSrcweir return (pResult - pStrList); 79cdf0e10cSrcweir else 80cdf0e10cSrcweir return -1; 81cdf0e10cSrcweir } 82cdf0e10cSrcweir } 83cdf0e10cSrcweir 84cdf0e10cSrcweir //------------------------------------------------------------------------------ 85cdf0e10cSrcweir sal_Int32 getColumnTypeByModelName(const ::rtl::OUString& aModelName) 86cdf0e10cSrcweir { 87cdf0e10cSrcweir const ::rtl::OUString aModelPrefix = ::rtl::OUString::createFromAscii("com.sun.star.form.component."); 88cdf0e10cSrcweir const ::rtl::OUString aCompatibleModelPrefix = ::rtl::OUString::createFromAscii("stardiv.one.form.component."); 89cdf0e10cSrcweir 90cdf0e10cSrcweir sal_Int32 nTypeId = -1; 91cdf0e10cSrcweir if (aModelName == FM_COMPONENT_EDIT) 92cdf0e10cSrcweir nTypeId = TYPE_TEXTFIELD; 93cdf0e10cSrcweir else 94cdf0e10cSrcweir { 95cdf0e10cSrcweir sal_Int32 nPrefixPos = aModelName.indexOf(aModelPrefix); 96cdf0e10cSrcweir #ifdef DBG_UTIL 97cdf0e10cSrcweir sal_Int32 nCompatiblePrefixPos = aModelName.indexOf(aCompatibleModelPrefix); 98cdf0e10cSrcweir DBG_ASSERT( (nPrefixPos != -1) || (nCompatiblePrefixPos != -1), "::getColumnTypeByModelName() : wrong servivce !"); 99cdf0e10cSrcweir #endif 100cdf0e10cSrcweir 101cdf0e10cSrcweir ::rtl::OUString aColumnType = (nPrefixPos != -1) 102cdf0e10cSrcweir ? aModelName.copy(aModelPrefix.getLength()) 103cdf0e10cSrcweir : aModelName.copy(aCompatibleModelPrefix.getLength()); 104cdf0e10cSrcweir 105cdf0e10cSrcweir const ::comphelper::StringSequence& rColumnTypes = getColumnTypes(); 106cdf0e10cSrcweir nTypeId = lcl_findPos(aColumnType, rColumnTypes); 107cdf0e10cSrcweir } 108cdf0e10cSrcweir return nTypeId; 109cdf0e10cSrcweir } 110cdf0e10cSrcweir 111