diff options
author | Oliver Bolte <obo@openoffice.org> | 2006-03-22 11:09:38 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2006-03-22 11:09:38 +0000 |
commit | c96920a2ace7bd3076900bf17205a95a87d0dfba (patch) | |
tree | 0724eabef0cbb49be61ad1b0094e1ea7e51df317 | |
parent | 8ed547be05af65e8234ce3191be0cf33a04af210 (diff) |
INTEGRATION: CWS dr46 (1.11.106); FILE MERGED
2006/02/16 13:06:16 er 1.11.106.1: #i4925# CSV export with option 'save as shown'
-rw-r--r-- | sc/source/ui/dbgui/imoptdlg.cxx | 281 |
1 files changed, 5 insertions, 276 deletions
diff --git a/sc/source/ui/dbgui/imoptdlg.cxx b/sc/source/ui/dbgui/imoptdlg.cxx index 21e1616d3..5337a74e3 100644 --- a/sc/source/ui/dbgui/imoptdlg.cxx +++ b/sc/source/ui/dbgui/imoptdlg.cxx @@ -4,9 +4,9 @@ * * $RCSfile: imoptdlg.cxx,v $ * - * $Revision: 1.11 $ + * $Revision: 1.12 $ * - * last change: $Author: rt $ $Date: 2005-09-08 20:36:52 $ + * last change: $Author: obo $ $Date: 2006-03-22 12:09:38 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -49,280 +49,6 @@ static const sal_Char pStrFix[] = "FIX"; -//CHINA001 //======================================================================== -//CHINA001 // ScDelimiterTable -//CHINA001 //======================================================================== -//CHINA001 -//CHINA001 class ScDelimiterTable -//CHINA001 { -//CHINA001 public: -//CHINA001 ScDelimiterTable( const String& rDelTab ) -//CHINA001 : theDelTab ( rDelTab ), -//CHINA001 cSep ( '\t' ), -//CHINA001 nCount ( rDelTab.GetTokenCount('\t') ), -//CHINA001 nIter ( 0 ) -//CHINA001 {} -//CHINA001 -//CHINA001 USHORT GetCode( const String& rDelimiter ) const; -//CHINA001 String GetDelimiter( sal_Unicode nCode ) const; -//CHINA001 -//CHINA001 String FirstDel() { nIter = 0; return theDelTab.GetToken( nIter, cSep ); } -//CHINA001 String NextDel() { nIter +=2; return theDelTab.GetToken( nIter, cSep ); } -//CHINA001 -//CHINA001 private: -//CHINA001 const String theDelTab; -//CHINA001 const sal_Unicode cSep; -//CHINA001 const xub_StrLen nCount; -//CHINA001 xub_StrLen nIter; -//CHINA001 }; -//CHINA001 -//CHINA001 //------------------------------------------------------------------------ -//CHINA001 -//CHINA001 USHORT ScDelimiterTable::GetCode( const String& rDel ) const -//CHINA001 { -//CHINA001 sal_Unicode nCode = 0; -//CHINA001 xub_StrLen i = 0; -//CHINA001 -//CHINA001 if ( nCount >= 2 ) -//CHINA001 { -//CHINA001 while ( i<nCount ) -//CHINA001 { -//CHINA001 if ( rDel == theDelTab.GetToken( i, cSep ) ) -//CHINA001 { -//CHINA001 nCode = (sal_Unicode) theDelTab.GetToken( i+1, cSep ).ToInt32(); -//CHINA001 i = nCount; -//CHINA001 } -//CHINA001 else -//CHINA001 i += 2; -//CHINA001 } -//CHINA001 } -//CHINA001 -//CHINA001 return nCode; -//CHINA001 } -//CHINA001 -//CHINA001 //------------------------------------------------------------------------ -//CHINA001 -//CHINA001 String ScDelimiterTable::GetDelimiter( sal_Unicode nCode ) const -//CHINA001 { -//CHINA001 String aStrDel; -//CHINA001 xub_StrLen i = 0; -//CHINA001 -//CHINA001 if ( nCount >= 2 ) -//CHINA001 { -//CHINA001 while ( i<nCount ) -//CHINA001 { -//CHINA001 if ( nCode == (sal_Unicode) theDelTab.GetToken( i+1, cSep ).ToInt32() ) -//CHINA001 { -//CHINA001 aStrDel = theDelTab.GetToken( i, cSep ); -//CHINA001 i = nCount; -//CHINA001 } -//CHINA001 else -//CHINA001 i += 2; -//CHINA001 } -//CHINA001 } -//CHINA001 -//CHINA001 return aStrDel; -//CHINA001 } -//CHINA001 -//CHINA001 //======================================================================== -//CHINA001 // ScImportOptionsDlg -//CHINA001 //======================================================================== -//CHINA001 -//CHINA001 ScImportOptionsDlg::ScImportOptionsDlg( -//CHINA001 Window* pParent, -//CHINA001 BOOL bAscii, -//CHINA001 const ScImportOptions* pOptions, -//CHINA001 const String* pStrTitle, -//CHINA001 BOOL bMultiByte, -//CHINA001 BOOL bOnlyDbtoolsEncodings, -//CHINA001 BOOL bImport ) -//CHINA001 -//CHINA001 : ModalDialog ( pParent, ScResId( RID_SCDLG_IMPORTOPT ) ), -//CHINA001 aBtnOk ( this, ScResId( BTN_OK ) ), -//CHINA001 aBtnCancel ( this, ScResId( BTN_CANCEL ) ), -//CHINA001 aBtnHelp ( this, ScResId( BTN_HELP ) ), -//CHINA001 aFtFieldSep ( this, ScResId( FT_FIELDSEP ) ), -//CHINA001 aEdFieldSep ( this, ScResId( ED_FIELDSEP ) ), -//CHINA001 aFtTextSep ( this, ScResId( FT_TEXTSEP ) ), -//CHINA001 aEdTextSep ( this, ScResId( ED_TEXTSEP ) ), -//CHINA001 aFtFont ( this, ScResId( FT_FONT ) ), -//CHINA001 aLbFont ( this, ScResId( bAscii ? DDLB_FONT : LB_FONT ) ), -//CHINA001 aFlFieldOpt ( this, ScResId( FL_FIELDOPT ) ), -//CHINA001 aCbFixed ( this, ScResId( CB_FIXEDWIDTH ) ) -//CHINA001 { -//CHINA001 // im Ctor-Initializer nicht moeglich (MSC kann das nicht): -//CHINA001 pFieldSepTab = new ScDelimiterTable( String(ScResId(SCSTR_FIELDSEP)) ); -//CHINA001 pTextSepTab = new ScDelimiterTable( String(ScResId(SCSTR_TEXTSEP)) ); -//CHINA001 -//CHINA001 String aStr = pFieldSepTab->FirstDel(); -//CHINA001 sal_Unicode nCode; -//CHINA001 -//CHINA001 while ( aStr.Len() > 0 ) -//CHINA001 { -//CHINA001 aEdFieldSep.InsertEntry( aStr ); -//CHINA001 aStr = pFieldSepTab->NextDel(); -//CHINA001 } -//CHINA001 -//CHINA001 aStr = pTextSepTab->FirstDel(); -//CHINA001 -//CHINA001 while ( aStr.Len() > 0 ) -//CHINA001 { -//CHINA001 aEdTextSep.InsertEntry( aStr ); -//CHINA001 aStr = pTextSepTab->NextDel(); -//CHINA001 } -//CHINA001 -//CHINA001 aEdFieldSep.SetText( aEdFieldSep.GetEntry(0) ); -//CHINA001 aEdTextSep.SetText( aEdTextSep.GetEntry(0) ); -//CHINA001 -//CHINA001 if ( bOnlyDbtoolsEncodings ) -//CHINA001 { //!TODO: Unicode and MultiByte would need work in each filter -//CHINA001 // Think of field lengths in dBase export -//CHINA001 if ( bMultiByte ) -//CHINA001 aLbFont.FillFromDbTextEncodingMap( bImport, RTL_TEXTENCODING_INFO_UNICODE ); -//CHINA001 else -//CHINA001 aLbFont.FillFromDbTextEncodingMap( bImport, RTL_TEXTENCODING_INFO_UNICODE | -//CHINA001 RTL_TEXTENCODING_INFO_MULTIBYTE ); -//CHINA001 } -//CHINA001 else if ( !bAscii ) -//CHINA001 { //!TODO: Unicode would need work in each filter -//CHINA001 if ( bMultiByte ) -//CHINA001 aLbFont.FillFromTextEncodingTable( bImport, RTL_TEXTENCODING_INFO_UNICODE ); -//CHINA001 else -//CHINA001 aLbFont.FillFromTextEncodingTable( bImport, RTL_TEXTENCODING_INFO_UNICODE | -//CHINA001 RTL_TEXTENCODING_INFO_MULTIBYTE ); -//CHINA001 } -//CHINA001 else -//CHINA001 { -//CHINA001 if ( pOptions ) -//CHINA001 { -//CHINA001 nCode = pOptions->nFieldSepCode; -//CHINA001 aStr = pFieldSepTab->GetDelimiter( nCode ); -//CHINA001 -//CHINA001 if ( !aStr.Len() ) -//CHINA001 aEdFieldSep.SetText( String((sal_Unicode)nCode) ); -//CHINA001 else -//CHINA001 aEdFieldSep.SetText( aStr ); -//CHINA001 -//CHINA001 nCode = pOptions->nTextSepCode; -//CHINA001 aStr = pTextSepTab->GetDelimiter( nCode ); -//CHINA001 -//CHINA001 if ( !aStr.Len() ) -//CHINA001 aEdTextSep.SetText( String((sal_Unicode)nCode) ); -//CHINA001 else -//CHINA001 aEdTextSep.SetText( aStr ); -//CHINA001 } -//CHINA001 // all encodings allowed, even Unicode -//CHINA001 aLbFont.FillFromTextEncodingTable( bImport ); -//CHINA001 } -//CHINA001 -//CHINA001 if( bAscii ) -//CHINA001 { -//CHINA001 Size aWinSize( GetSizePixel() ); -//CHINA001 aWinSize.Height() = aCbFixed.GetPosPixel().Y() + aCbFixed.GetSizePixel().Height(); -//CHINA001 Size aDiffSize( LogicToPixel( Size( 0, 6 ), MapMode( MAP_APPFONT ) ) ); -//CHINA001 aWinSize.Height() += aDiffSize.Height(); -//CHINA001 SetSizePixel( aWinSize ); -//CHINA001 aCbFixed.Show(); -//CHINA001 aCbFixed.SetClickHdl( LINK( this, ScImportOptionsDlg, FixedWidthHdl ) ); -//CHINA001 aCbFixed.Check( FALSE ); -//CHINA001 } -//CHINA001 else -//CHINA001 { -//CHINA001 aFlFieldOpt.SetText( aFtFont.GetText() ); -//CHINA001 aFtFieldSep.Hide(); -//CHINA001 aFtTextSep.Hide(); -//CHINA001 aFtFont.Hide(); -//CHINA001 aEdFieldSep.Hide(); -//CHINA001 aEdTextSep.Hide(); -//CHINA001 aCbFixed.Hide(); -//CHINA001 aLbFont.GrabFocus(); -//CHINA001 aLbFont.SetDoubleClickHdl( LINK( this, ScImportOptionsDlg, DoubleClickHdl ) ); -//CHINA001 } -//CHINA001 -//CHINA001 aLbFont.SelectTextEncoding( pOptions ? pOptions->eCharSet : -//CHINA001 gsl_getSystemTextEncoding() ); -//CHINA001 -//CHINA001 // optionaler Titel: -//CHINA001 if ( pStrTitle ) -//CHINA001 SetText( *pStrTitle ); -//CHINA001 -//CHINA001 FreeResource(); -//CHINA001 } -//CHINA001 -//CHINA001 //------------------------------------------------------------------------ -//CHINA001 -//CHINA001 __EXPORT ScImportOptionsDlg::~ScImportOptionsDlg() -//CHINA001 { -//CHINA001 delete pFieldSepTab; -//CHINA001 delete pTextSepTab; -//CHINA001 } -//CHINA001 -//CHINA001 //------------------------------------------------------------------------ -//CHINA001 -//CHINA001 void ScImportOptionsDlg::GetImportOptions( ScImportOptions& rOptions ) const -//CHINA001 { -//CHINA001 rOptions.SetTextEncoding( aLbFont.GetSelectTextEncoding() ); -//CHINA001 -//CHINA001 if ( aCbFixed.IsVisible() ) -//CHINA001 { -//CHINA001 rOptions.nFieldSepCode = GetCodeFromCombo( aEdFieldSep ); -//CHINA001 rOptions.nTextSepCode = GetCodeFromCombo( aEdTextSep ); -//CHINA001 rOptions.bFixedWidth = aCbFixed.IsChecked(); -//CHINA001 } -//CHINA001 } -//CHINA001 -//CHINA001 //------------------------------------------------------------------------ -//CHINA001 -//CHINA001 USHORT ScImportOptionsDlg::GetCodeFromCombo( const ComboBox& rEd ) const -//CHINA001 { -//CHINA001 ScDelimiterTable* pTab; -//CHINA001 String aStr( rEd.GetText() ); -//CHINA001 USHORT nCode; -//CHINA001 -//CHINA001 if ( &rEd == &aEdTextSep ) -//CHINA001 pTab = pTextSepTab; -//CHINA001 else -//CHINA001 pTab = pFieldSepTab; -//CHINA001 -//CHINA001 if ( !aStr.Len() ) -//CHINA001 { -//CHINA001 nCode = 0; // kein Trennzeichen -//CHINA001 } -//CHINA001 else -//CHINA001 { -//CHINA001 nCode = pTab->GetCode( aStr ); -//CHINA001 -//CHINA001 if ( nCode == 0 ) -//CHINA001 nCode = (USHORT)aStr.GetChar(0); -//CHINA001 } -//CHINA001 -//CHINA001 return nCode; -//CHINA001 } -//CHINA001 -//CHINA001 //------------------------------------------------------------------------ -//CHINA001 -//CHINA001 IMPL_LINK( ScImportOptionsDlg, FixedWidthHdl, CheckBox*, pCheckBox ) -//CHINA001 { -//CHINA001 if( pCheckBox == &aCbFixed ) -//CHINA001 { -//CHINA001 BOOL bEnable = !aCbFixed.IsChecked(); -//CHINA001 aFtFieldSep.Enable( bEnable ); -//CHINA001 aEdFieldSep.Enable( bEnable ); -//CHINA001 aFtTextSep.Enable( bEnable ); -//CHINA001 aEdTextSep.Enable( bEnable ); -//CHINA001 } -//CHINA001 return 0; -//CHINA001 } -//CHINA001 -//CHINA001 IMPL_LINK( ScImportOptionsDlg, DoubleClickHdl, ListBox*, pLb ) -//CHINA001 { -//CHINA001 if ( pLb == &aLbFont ) -//CHINA001 { -//CHINA001 aBtnOk.Click(); -//CHINA001 } -//CHINA001 return 0; -//CHINA001 } - //------------------------------------------------------------------------ // Der Options-String darf kein Semikolon mehr enthalten (wegen Pickliste) // darum ab Version 336 Komma stattdessen @@ -342,6 +68,7 @@ ScImportOptions::ScImportOptions( const String& rStr ) nTextSepCode = (sal_Unicode) rStr.GetToken(1,',').ToInt32(); aStrFont = rStr.GetToken(2,','); eCharSet = ScGlobal::GetCharsetValue(aStrFont); + bSaveAsShown = (rStr.GetToken( 3, ',' ).ToInt32() ? TRUE : FALSE); } } @@ -359,6 +86,8 @@ String ScImportOptions::BuildString() const aResult += String::CreateFromInt32(nTextSepCode); aResult += ','; aResult += aStrFont; + aResult += ','; + aResult += String::CreateFromInt32( bSaveAsShown ? 1 : 0 ); return aResult; } |