--- officecfg/registry/schema/org/openoffice/Office/Calc.xcs 2010-03-26 23:20:58.000000000 +0530 +++ officecfg/registry/schema/org/openoffice/Office/Calc.xcs 2010-03-27 15:53:09.000000000 +0530 @@ -1023,6 +1023,19 @@ Contains the dialogs settings. + + + Contains settings for DBF Import + + + + muthusuba + Charset/Language + + + -1 + + Contains setting for Text CSV Import --- filtuno.cxx.org 2010-03-27 16:39:55.000000000 +0530 +++ filtuno.cxx 2010-03-27 16:39:08.000000000 +0530 @@ -55,8 +55,15 @@ #include +#include +#include +#include + + using namespace ::com::sun::star; using ::rtl::OUStringBuffer; +using namespace rtl; +using namespace com::sun::star::uno; //------------------------------------------------------------------------ @@ -70,8 +77,54 @@ SC_SIMPLE_SERVICE_INFO( ScFilterOptionsO #define SC_UNONAME_FILTEROPTIONS "FilterOptions" #define SC_UNONAME_INPUTSTREAM "InputStream" + +#define CHAR_SET "CharSet" +#define SEP_PATH "Office.Calc/Dialogs/DBFImport" + +//------------------------------------------------------------------------ + +static void load_CharSet( rtl_TextEncoding &nCharSet ) +{ + sal_Int32 nChar; + Sequence aValues; + const Any *pProperties; + Sequence aNames(1); + OUString* pNames = aNames.getArray(); + ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); + + pNames[0] = OUString::createFromAscii( CHAR_SET ); + aValues = aItem.GetProperties( aNames ); + pProperties = aValues.getConstArray(); + + // Default choice + nCharSet = RTL_TEXTENCODING_IBM_850; + + if( pProperties[0].hasValue() ) + { + pProperties[0] >>= nChar; + if( nChar >= 0) + nCharSet = (rtl_TextEncoding) nChar; + } +} + +static void save_CharSet( rtl_TextEncoding nCharSet ) +{ + Sequence aValues; + Any *pProperties; + Sequence aNames(1); + OUString* pNames = aNames.getArray(); + ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); + + pNames[0] = OUString::createFromAscii( CHAR_SET ); + aValues = aItem.GetProperties( aNames ); + pProperties = aValues.getArray(); + pProperties[0] <<= (sal_Int32) nCharSet; + + aItem.PutProperties(aNames, aValues); +} + //------------------------------------------------------------------------ ScFilterOptionsObj::ScFilterOptionsObj() : bExport( sal_False ) { @@ -251,7 +305,7 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::e aTitle = ScGlobal::GetRscString( STR_IMPORT_DBF ); } // common for dBase import/export - eEncoding = RTL_TEXTENCODING_IBM_850; + load_CharSet( eEncoding ); bDBEnc = sal_True; } else if ( aFilterString == ScDocShell::GetDifFilterName() ) @@ -283,6 +337,7 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::e if ( pDlg->Execute() == RET_OK ) { pDlg->GetImportOptions( aOptions ); + save_CharSet( aOptions.eCharSet ); if ( bAscii ) aFilterOptions = aOptions.BuildString(); else