261 lines
8.5 KiB
C++
261 lines
8.5 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* This file is part of OpenOffice.org.
|
|
*
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
* only, as published by the Free Software Foundation.
|
|
*
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License version 3 for more details
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
* <http://www.openoffice.org/license.html>
|
|
* for a copy of the LGPLv3 License.
|
|
*
|
|
************************************************************************/
|
|
|
|
#include "sal/config.h"
|
|
|
|
#include "export.hxx"
|
|
#include <stdio.h>
|
|
#include <osl/time.h>
|
|
#include <osl/process.h>
|
|
#include <rtl/strbuf.hxx>
|
|
#include <rtl/ustring.hxx>
|
|
#include <sal/macros.h>
|
|
#include <iostream>
|
|
#include <iomanip>
|
|
#include <time.h>
|
|
#include <stdlib.h>
|
|
|
|
//
|
|
// class ResData();
|
|
//
|
|
|
|
/*****************************************************************************/
|
|
ResData::~ResData()
|
|
/*****************************************************************************/
|
|
{
|
|
if ( pStringList ) {
|
|
// delete existing res. of type StringList
|
|
for ( size_t i = 0; i < pStringList->size(); i++ ) {
|
|
ExportListEntry* test = (*pStringList)[ i ];
|
|
if( test != NULL ) delete test;
|
|
}
|
|
delete pStringList;
|
|
}
|
|
if ( pFilterList ) {
|
|
// delete existing res. of type FilterList
|
|
for ( size_t i = 0; i < pFilterList->size(); i++ ) {
|
|
ExportListEntry* test = (*pFilterList)[ i ];
|
|
delete test;
|
|
}
|
|
delete pFilterList;
|
|
}
|
|
if ( pItemList ) {
|
|
// delete existing res. of type ItemList
|
|
for ( size_t i = 0; i < pItemList->size(); i++ ) {
|
|
ExportListEntry* test = (*pItemList)[ i ];
|
|
delete test;
|
|
}
|
|
delete pItemList;
|
|
}
|
|
if ( pUIEntries ) {
|
|
// delete existing res. of type UIEntries
|
|
for ( size_t i = 0; i < pUIEntries->size(); i++ ) {
|
|
ExportListEntry* test = (*pUIEntries)[ i ];
|
|
delete test;
|
|
}
|
|
delete pUIEntries;
|
|
}
|
|
}
|
|
|
|
//
|
|
// class Export
|
|
//
|
|
|
|
/*****************************************************************************/
|
|
rtl::OString Export::sLanguages;
|
|
rtl::OString Export::sForcedLanguages;
|
|
/*****************************************************************************/
|
|
|
|
/*****************************************************************************/
|
|
void Export::SetLanguages( std::vector<rtl::OString> val ){
|
|
/*****************************************************************************/
|
|
aLanguages = val;
|
|
isInitialized = true;
|
|
}
|
|
/*****************************************************************************/
|
|
std::vector<rtl::OString> Export::GetLanguages(){
|
|
/*****************************************************************************/
|
|
return aLanguages;
|
|
}
|
|
/*****************************************************************************/
|
|
std::vector<rtl::OString> Export::GetForcedLanguages(){
|
|
/*****************************************************************************/
|
|
return aForcedLanguages;
|
|
}
|
|
std::vector<rtl::OString> Export::aLanguages = std::vector<rtl::OString>();
|
|
std::vector<rtl::OString> Export::aForcedLanguages = std::vector<rtl::OString>();
|
|
|
|
/*****************************************************************************/
|
|
rtl::OString Export::QuoteHTML( rtl::OString const &rString )
|
|
/*****************************************************************************/
|
|
{
|
|
rtl::OStringBuffer sReturn;
|
|
for ( sal_Int32 i = 0; i < rString.getLength(); i++ ) {
|
|
rtl::OString sTemp = rString.copy( i );
|
|
if ( sTemp.match( "<Arg n=" ) ) {
|
|
while ( i < rString.getLength() && rString[i] != '>' ) {
|
|
sReturn.append(rString[i]);
|
|
i++;
|
|
}
|
|
if ( rString[i] == '>' ) {
|
|
sReturn.append('>');
|
|
i++;
|
|
}
|
|
}
|
|
if ( i < rString.getLength()) {
|
|
switch ( rString[i]) {
|
|
case '<':
|
|
sReturn.append("<");
|
|
break;
|
|
|
|
case '>':
|
|
sReturn.append(">");
|
|
break;
|
|
|
|
case '\"':
|
|
sReturn.append(""");
|
|
break;
|
|
|
|
case '\'':
|
|
sReturn.append("'");
|
|
break;
|
|
|
|
case '&':
|
|
if ((( i + 4 ) < rString.getLength()) &&
|
|
( rString.copy( i, 5 ) == "&" ))
|
|
sReturn.append(rString[i]);
|
|
else
|
|
sReturn.append("&");
|
|
break;
|
|
|
|
default:
|
|
sReturn.append(rString[i]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return sReturn.makeStringAndClear();
|
|
}
|
|
|
|
void Export::RemoveUTF8ByteOrderMarker( rtl::OString &rString )
|
|
{
|
|
if( hasUTF8ByteOrderMarker( rString ) )
|
|
rString = rString.copy(3);
|
|
}
|
|
|
|
bool Export::hasUTF8ByteOrderMarker( const rtl::OString &rString )
|
|
{
|
|
return rString.getLength() >= 3 && rString[0] == '\xEF' &&
|
|
rString[1] == '\xBB' && rString[2] == '\xBF' ;
|
|
}
|
|
|
|
/*****************************************************************************/
|
|
rtl::OString Export::UnquoteHTML( rtl::OString const &rString )
|
|
/*****************************************************************************/
|
|
{
|
|
rtl::OStringBuffer sReturn;
|
|
for (sal_Int32 i = 0; i != rString.getLength();) {
|
|
if (rString.match("&", i)) {
|
|
sReturn.append('&');
|
|
i += RTL_CONSTASCII_LENGTH("&");
|
|
} else if (rString.match("<", i)) {
|
|
sReturn.append('<');
|
|
i += RTL_CONSTASCII_LENGTH("<");
|
|
} else if (rString.match(">", i)) {
|
|
sReturn.append('>');
|
|
i += RTL_CONSTASCII_LENGTH(">");
|
|
} else if (rString.match(""", i)) {
|
|
sReturn.append('"');
|
|
i += RTL_CONSTASCII_LENGTH(""");
|
|
} else if (rString.match("'", i)) {
|
|
sReturn.append('\'');
|
|
i += RTL_CONSTASCII_LENGTH("'");
|
|
} else {
|
|
sReturn.append(rString[i]);
|
|
++i;
|
|
}
|
|
}
|
|
return sReturn.makeStringAndClear();
|
|
}
|
|
|
|
bool Export::isSourceLanguage(const rtl::OString &rLanguage)
|
|
{
|
|
return !isAllowed(rLanguage);
|
|
}
|
|
|
|
bool Export::isAllowed(const rtl::OString &rLanguage)
|
|
{
|
|
return !rLanguage.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("en-US"));
|
|
}
|
|
|
|
bool Export::isInitialized = false;
|
|
|
|
/*****************************************************************************/
|
|
void Export::InitLanguages( bool bMergeMode ){
|
|
/*****************************************************************************/
|
|
if( !isInitialized )
|
|
{
|
|
rtl::OString sTmp;
|
|
OStringBoolHashMap aEnvLangs;
|
|
|
|
sal_Int32 nIndex = 0;
|
|
do
|
|
{
|
|
rtl::OString aToken = sLanguages.getToken(0, ',', nIndex);
|
|
sTmp = aToken.getToken(0, '=').trim();
|
|
if( bMergeMode && !isAllowed( sTmp ) ){}
|
|
else if( !( (sTmp[0]=='x' || sTmp[0]=='X') && sTmp[1]=='-' ) ){
|
|
aLanguages.push_back( sTmp );
|
|
}
|
|
}
|
|
while ( nIndex >= 0 );
|
|
|
|
InitForcedLanguages( bMergeMode );
|
|
isInitialized = true;
|
|
}
|
|
}
|
|
/*****************************************************************************/
|
|
void Export::InitForcedLanguages( bool bMergeMode ){
|
|
/*****************************************************************************/
|
|
rtl::OString sTmp;
|
|
OStringBoolHashMap aEnvLangs;
|
|
|
|
sal_Int32 nIndex = 0;
|
|
do
|
|
{
|
|
rtl::OString aToken = sForcedLanguages.getToken(0, ',', nIndex);
|
|
|
|
sTmp = aToken.getToken(0, '=').trim();
|
|
if( bMergeMode && isAllowed( sTmp ) ){}
|
|
else if( !( (sTmp[0]=='x' || sTmp[0]=='X') && sTmp[1]=='-' ) )
|
|
aForcedLanguages.push_back( sTmp );
|
|
}
|
|
while ( nIndex >= 0 );
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|