--- officecfg/registry/schema/org/openoffice/Office/Calc.xcs 2005-07-24 17:09:34.000000000 +0530 +++ officecfg/registry/schema/org/openoffice/Office/Calc.xcs 2005-07-31 22:13:51.000000000 +0530 @@ -1041,6 +1041,35 @@ NULL + + + Contains setting for Text CSV Import + + + + muthusuba + Merge Delimiter check box status + + + false + + + + muthusuba + List of Separators - as a String + + + ; + + + + muthusuba + Text Separators + + + " + + Contains settings that affect cell calculation. --- sc/source/ui/dbgui/scuiasciiopt.cxx 2005-07-24 17:46:45.000000000 +0530 +++ sc/source/ui/dbgui/scuiasciiopt.cxx 2005-07-31 22:37:08.000000000 +0530 @@ -79,6 +79,12 @@ // ause #include "editutil.hxx" +#include +#include +#include +#include "miscuno.hxx" + + //! TODO make dynamic #ifdef WIN const SCSIZE ASCIIDLG_MAXROWS = 10000; @@ -86,6 +92,17 @@ const SCSIZE ASCIIDLG_MAXROWS const SCSIZE ASCIIDLG_MAXROWS = MAXROWCOUNT; #endif + +using namespace rtl; +using namespace com::sun::star::uno; + +// Defines - CSV Import Preserve Options +#define SEPARATORS "Separators" +#define TEXT_SEPARATORS "TextSeparators" +#define MERGE_DELIMITERS "MergeDelimiters" +#define SEP_PATH "Office.Calc/CSVImport" + + // ============================================================================ void lcl_FillCombo( ComboBox& rCombo, const String& rList, sal_Unicode cSelect ) @@ -133,6 +150,51 @@ sal_Unicode lcl_CharFromCombo( ComboBox& return c; } +static void load_Separators( OUString &sFieldSeparators, OUString &sTextSeparators, + bool &bMergeDelimiters ) +{ + SequenceaValues; + const Any *pProperties; + Sequence aNames(3); + OUString* pNames = aNames.getArray(); + ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); + + pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS ); + pNames[1] = OUString::createFromAscii( SEPARATORS ); + pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS ); + aValues = aItem.GetProperties( aNames ); + pProperties = aValues.getConstArray(); + if( pProperties[1].hasValue() ) + pProperties[1] >>= sFieldSeparators; + + if( pProperties[2].hasValue() ) + pProperties[2] >>= sTextSeparators; + + if( pProperties[0].hasValue() ) + bMergeDelimiters = ScUnoHelpFunctions::GetBoolFromAny( pProperties[0] ); +} + +static void save_Separators( String maSeparators, String maTxtSep, bool bMergeDelimiters ) +{ + OUString sFieldSeparators = OUString( maSeparators ); + OUString sTextSeparators = OUString( maTxtSep ); + Sequence aValues; + Any *pProperties; + Sequence aNames(3); + OUString* pNames = aNames.getArray(); + ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); + + pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS ); + pNames[1] = OUString::createFromAscii( SEPARATORS ); + pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS ); + aValues = aItem.GetProperties( aNames ); + pProperties = aValues.getArray(); + pProperties[1] <<= sFieldSeparators; + pProperties[2] <<= sTextSeparators; + ScUnoHelpFunctions::SetBoolInAny( pProperties[0], bMergeDelimiters ); + + aItem.PutProperties(aNames, aValues); +} // ---------------------------------------------------------------------------- @@ -190,16 +252,35 @@ ScImportAsciiDlg::ScImportAsciiDlg( Wind aName += ']'; SetText( aName ); - switch(cSep) + + OUString sFieldSeparators; + OUString sTextSeparators; + bool bMergeDelimiters = false; + load_Separators (sFieldSeparators, sTextSeparators, bMergeDelimiters); + maFieldSeparators = String(sFieldSeparators); + + if( bMergeDelimiters ) + aCkbAsOnce.Check(); + + ByteString bString(maFieldSeparators,RTL_TEXTENCODING_MS_1252); + const sal_Char *aSep = bString.GetBuffer(); + int i = 0; + int len = maFieldSeparators.Len(); + for(i=0;i