diff options
author | Lionel Elie Mamane <lionel@mamane.lu> | 2017-06-28 03:03:02 +0200 |
---|---|---|
committer | Lionel Elie Mamane <lionel@mamane.lu> | 2017-07-02 11:55:33 +0200 |
commit | 8a146a7e29a17f0ab82fee7e45b32d81f1f92619 (patch) | |
tree | 9bdfb056826cc5aa87636684de2fee490be5f1de | |
parent | 12a57a527a9ddcc56a9af79bf063ebde6b0b1d2c (diff) |
julien it compiles patch
Change-Id: I89fa48dda0d907fa0bdcc49be373ed1b1cfd8c73
-rw-r--r-- | sc/source/ui/unoobj/filtuno.cxx | 112 |
1 files changed, 66 insertions, 46 deletions
diff --git a/sc/source/ui/unoobj/filtuno.cxx b/sc/source/ui/unoobj/filtuno.cxx index 09a6a78a9867..45570676c9e2 100644 --- a/sc/source/ui/unoobj/filtuno.cxx +++ b/sc/source/ui/unoobj/filtuno.cxx @@ -68,13 +68,25 @@ namespace charset_from_user_setting, charset_default }; - - charsetSource load_CharSet( rtl_TextEncoding &nCharSet, bool bExport, string_or_url fname ) + // TODO: use DTable.hxx instead + enum DBFType { dBaseIII = 0x03, + dBaseIV = 0x04, + dBaseV = 0x05, + VisualFoxPro = 0x30, + VisualFoxProAuto = 0x31, // Visual FoxPro with AutoIncrement field + dBaseFS = 0x43, + dBaseFSMemo = 0xB3, + dBaseIIIMemo = 0x83, + dBaseIVMemo = 0x8B, + dBaseIVMemoSQL = 0x8E, + FoxProMemo = 0xF5 + }; + + charsetSource load_CharSet(rtl_TextEncoding &nCharSet, bool bExport, SvStream* dbf_Stream) { { - lo_stream dbfStream(fname, ...); sal_uInt8 nType=0; - dbfStream.ReadUChar( nType ); + dbf_Stream->ReadUChar( nType ); switch (nType) { @@ -88,56 +100,57 @@ namespace case dBaseIVMemoSQL: case dBaseIIIMemo: case FoxProMemo: - dbfStream.SetEndian(SvStreamEndian::LITTLE); + dbf_Stream->SetEndian(SvStreamEndian::LITTLE); - dbf_stream.Seek(STREAM_SEEK_TO_BEGIN + 29); - if (seek_succeeded_ie_not_end_of_file) - { + dbf_Stream->Seek(STREAM_SEEK_TO_BEGIN + 29); + // TODO : how to check this? + // if (seek_succeeded_ie_not_end_of_file) + //{ sal_uInt8 nEncoding=0; - dbfStream.ReadUChar( nEncoding ); + dbf_Stream->ReadUChar( nEncoding ); if (nEncoding != 0x00) { auto eEncoding(RTL_TEXTENCODING_DONTKNOW); - switch(m_aHeader.db_frei[17]) + switch(nEncoding) { - case 0x01: m_eEncoding = RTL_TEXTENCODING_IBM_437; break; // DOS USA code page 437 - case 0x02: m_eEncoding = RTL_TEXTENCODING_IBM_850; break; // DOS Multilingual code page 850 - case 0x03: m_eEncoding = RTL_TEXTENCODING_MS_1252; break; // Windows ANSI code page 1252 - case 0x04: m_eEncoding = RTL_TEXTENCODING_APPLE_ROMAN; break; // Standard Macintosh - case 0x64: m_eEncoding = RTL_TEXTENCODING_IBM_852; break; // EE MS-DOS code page 852 - case 0x65: m_eEncoding = RTL_TEXTENCODING_IBM_866; break; // Russian MS-DOS code page 866 - case 0x66: m_eEncoding = RTL_TEXTENCODING_IBM_865; break; // Nordic MS-DOS code page 865 - case 0x67: m_eEncoding = RTL_TEXTENCODING_IBM_861; break; // Icelandic MS-DOS - //case 0x68: m_eEncoding = ; break; // Kamenicky (Czech) MS-DOS - //case 0x69: m_eEncoding = ; break; // Mazovia (Polish) MS-DOS - case 0x6A: m_eEncoding = RTL_TEXTENCODING_IBM_737; break; // Greek MS-DOS (437G) - case 0x6B: m_eEncoding = RTL_TEXTENCODING_IBM_857; break; // Turkish MS-DOS - case 0x6C: m_eEncoding = RTL_TEXTENCODING_IBM_863; break; // MS-DOS, Canada - case 0x78: m_eEncoding = RTL_TEXTENCODING_MS_950; break; // Windows, Traditional Chinese - case 0x79: m_eEncoding = RTL_TEXTENCODING_MS_949; break; // Windows, Korean (Hangul) - case 0x7A: m_eEncoding = RTL_TEXTENCODING_MS_936; break; // Windows, Simplified Chinese - case 0x7B: m_eEncoding = RTL_TEXTENCODING_MS_932; break; // Windows, Japanese (Shift-jis) - case 0x7C: m_eEncoding = RTL_TEXTENCODING_MS_874; break; // Windows, Thai - case 0x7D: m_eEncoding = RTL_TEXTENCODING_MS_1255; break; // Windows, Hebrew - case 0x7E: m_eEncoding = RTL_TEXTENCODING_MS_1256; break; // Windows, Arabic - case 0x96: m_eEncoding = RTL_TEXTENCODING_APPLE_CYRILLIC; break; // Russian Macintosh - case 0x97: m_eEncoding = RTL_TEXTENCODING_APPLE_CENTEURO; break; // Eastern European Macintosh - case 0x98: m_eEncoding = RTL_TEXTENCODING_APPLE_GREEK; break; // Greek Macintosh - case 0xC8: m_eEncoding = RTL_TEXTENCODING_MS_1250; break; // Windows EE code page 1250 - case 0xC9: m_eEncoding = RTL_TEXTENCODING_MS_1251; break; // Russian Windows - case 0xCA: m_eEncoding = RTL_TEXTENCODING_MS_1254; break; // Turkish Windows - case 0xCB: m_eEncoding = RTL_TEXTENCODING_MS_1253; break; // Greek Windows - case 0xCC: m_eEncoding = RTL_TEXTENCODING_MS_1257; break; // Windows, Baltic + case 0x01: eEncoding = RTL_TEXTENCODING_IBM_437; break; // DOS USA code page 437 + case 0x02: eEncoding = RTL_TEXTENCODING_IBM_850; break; // DOS Multilingual code page 850 + case 0x03: eEncoding = RTL_TEXTENCODING_MS_1252; break; // Windows ANSI code page 1252 + case 0x04: eEncoding = RTL_TEXTENCODING_APPLE_ROMAN; break; // Standard Macintosh + case 0x64: eEncoding = RTL_TEXTENCODING_IBM_852; break; // EE MS-DOS code page 852 + case 0x65: eEncoding = RTL_TEXTENCODING_IBM_866; break; // Russian MS-DOS code page 866 + case 0x66: eEncoding = RTL_TEXTENCODING_IBM_865; break; // Nordic MS-DOS code page 865 + case 0x67: eEncoding = RTL_TEXTENCODING_IBM_861; break; // Icelandic MS-DOS + //case 0x68: eEncoding = ; break; // Kamenicky (Czech) MS-DOS + //case 0x69: eEncoding = ; break; // Mazovia (Polish) MS-DOS + case 0x6A: eEncoding = RTL_TEXTENCODING_IBM_737; break; // Greek MS-DOS (437G) + case 0x6B: eEncoding = RTL_TEXTENCODING_IBM_857; break; // Turkish MS-DOS + case 0x6C: eEncoding = RTL_TEXTENCODING_IBM_863; break; // MS-DOS, Canada + case 0x78: eEncoding = RTL_TEXTENCODING_MS_950; break; // Windows, Traditional Chinese + case 0x79: eEncoding = RTL_TEXTENCODING_MS_949; break; // Windows, Korean (Hangul) + case 0x7A: eEncoding = RTL_TEXTENCODING_MS_936; break; // Windows, Simplified Chinese + case 0x7B: eEncoding = RTL_TEXTENCODING_MS_932; break; // Windows, Japanese (Shift-jis) + case 0x7C: eEncoding = RTL_TEXTENCODING_MS_874; break; // Windows, Thai + case 0x7D: eEncoding = RTL_TEXTENCODING_MS_1255; break; // Windows, Hebrew + case 0x7E: eEncoding = RTL_TEXTENCODING_MS_1256; break; // Windows, Arabic + case 0x96: eEncoding = RTL_TEXTENCODING_APPLE_CYRILLIC; break; // Russian Macintosh + case 0x97: eEncoding = RTL_TEXTENCODING_APPLE_CENTEURO; break; // Eastern European Macintosh + case 0x98: eEncoding = RTL_TEXTENCODING_APPLE_GREEK; break; // Greek Macintosh + case 0xC8: eEncoding = RTL_TEXTENCODING_MS_1250; break; // Windows EE code page 1250 + case 0xC9: eEncoding = RTL_TEXTENCODING_MS_1251; break; // Russian Windows + case 0xCA: eEncoding = RTL_TEXTENCODING_MS_1254; break; // Turkish Windows + case 0xCB: eEncoding = RTL_TEXTENCODING_MS_1253; break; // Greek Windows + case 0xCC: eEncoding = RTL_TEXTENCODING_MS_1257; break; // Windows, Baltic } if(eEncoding != RTL_TEXTENCODING_DONTKNOW) { nCharSet = eEncoding; - return charset_from_file; + return charsetSource::charset_from_file; } } - } + //} } - // dbfStream goes out of scope, is automatically closed + // dbf_Stream goes out of scope, is automatically closed } { Sequence<Any> aValues; @@ -156,13 +169,13 @@ namespace if( nChar >= 0) { nCharSet = (rtl_TextEncoding) nChar; - return charset_from_user_setting; + return charsetSource::charset_from_user_setting; } } // Default choice nCharSet = RTL_TEXTENCODING_IBM_850; - return charset_default; + return charsetSource::charset_default; } } @@ -334,10 +347,17 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::execute() // dBase import aTitle = ScGlobal::GetRscString( STR_IMPORT_DBF ); } - switch(load_CharSet( eEncoding, bExport, aFileName )) + + std::unique_ptr<SvStream> pInStream; + if ( xInputStream.is() ) + pInStream.reset(utl::UcbStreamHelper::CreateStream( xInputStream )); + switch(load_CharSet( eEncoding, bExport, pInStream.get())) { - case charset_from_file: - skipDialog = true; + case charsetSource::charset_from_file: + skipDialog = true;break; + case charsetSource::charset_from_user_setting: + case charsetSource::charset_default: + break; } bDBEnc = true; } |