| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #include <stdio.h> |
| #include <rtl/ustring.hxx> |
| #include <resourcemodel/ResourceModelHelper.hxx> |
| #include <com/sun/star/beans/XPropertySet.hpp> |
| #include <SettingsTable.hxx> |
| #include <resourcemodel/ResourceModelHelper.hxx> |
| #include <doctok/resourceids.hxx> |
| #include <ooxml/resourceids.hxx> |
| #include <ConversionHelper.hxx> |
| |
| #include "dmapperLoggers.hxx" |
| |
| namespace writerfilter { |
| |
| using resourcemodel::resolveSprmProps; |
| |
| namespace dmapper |
| { |
| |
| struct SettingsTable_Impl |
| { |
| DomainMapper& m_rDMapper; |
| const uno::Reference< lang::XMultiServiceFactory > m_xTextFactory; |
| |
| ::rtl::OUString m_sCharacterSpacing; |
| ::rtl::OUString m_sDecimalSymbol; |
| ::rtl::OUString m_sListSeparatorForFields; //2.15.1.56 listSeparator (List Separator for Field Code Evaluation) |
| |
| int m_nDefaultTabStop; |
| int m_nHyphenationZone; |
| |
| bool m_bNoPunctuationKerning; |
| bool m_doNotIncludeSubdocsInStats; // Do Not Include Content in Text Boxes, Footnotes, and Endnotes in Document Statistics) |
| bool m_bRecordChanges; |
| int m_nEdit; |
| bool m_bFormatting; |
| bool m_bEnforcement; |
| int m_nCryptProviderType; |
| int m_nCryptAlgorithmClass; |
| int m_nCryptAlgorithmType; |
| ::rtl::OUString m_sCryptAlgorithmSid; |
| int m_nCryptSpinCount; |
| ::rtl::OUString m_sCryptProvider; |
| ::rtl::OUString m_sAlgIdExt; |
| ::rtl::OUString m_sAlgIdExtSource; |
| ::rtl::OUString m_sCryptProviderTypeExt; |
| ::rtl::OUString m_sCryptProviderTypeExtSource; |
| ::rtl::OUString m_sHash; |
| ::rtl::OUString m_sSalt; |
| |
| SettingsTable_Impl( DomainMapper& rDMapper, const uno::Reference< lang::XMultiServiceFactory > xTextFactory ) : |
| m_rDMapper( rDMapper ) |
| , m_xTextFactory( xTextFactory ) |
| , m_nDefaultTabStop( 720 ) //default is 1/2 in |
| , m_nHyphenationZone(0) |
| , m_bNoPunctuationKerning(false) |
| , m_doNotIncludeSubdocsInStats(false) |
| , m_bRecordChanges(false) |
| , m_nEdit(NS_ooxml::LN_Value_wordprocessingml_ST_DocProtect_none) |
| , m_bFormatting(false) |
| , m_bEnforcement(false) |
| , m_nCryptProviderType(NS_ooxml::LN_Value_wordprocessingml_ST_CryptProv_rsaAES) |
| , m_nCryptAlgorithmClass(NS_ooxml::LN_Value_wordprocessingml_ST_AlgClass_hash) |
| , m_nCryptAlgorithmType(NS_ooxml::LN_Value_wordprocessingml_ST_AlgType_typeAny) |
| , m_nCryptSpinCount(0) |
| {} |
| |
| }; |
| |
| SettingsTable::SettingsTable(DomainMapper& rDMapper, const uno::Reference< lang::XMultiServiceFactory > xTextFactory) |
| : LoggedProperties(dmapper_logger, "SettingsTable") |
| , LoggedTable(dmapper_logger, "SettingsTable") |
| , m_pImpl( new SettingsTable_Impl(rDMapper, xTextFactory) ) |
| { |
| // printf("SettingsTable::SettingsTable()\n"); |
| } |
| |
| SettingsTable::~SettingsTable() |
| { |
| delete m_pImpl; |
| } |
| |
| void SettingsTable::lcl_attribute(Id nName, Value & val) |
| { |
| (void) nName; |
| int nIntValue = val.getInt(); |
| (void)nIntValue; |
| ::rtl::OUString sValue = val.getString(); |
| (void)sValue; |
| //printf ( "SettingsTable::attribute(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)Name, (unsigned int)nIntValue, ::rtl::OUStringToOString(sValue, RTL_TEXTENCODING_DONTKNOW).getStr()); |
| /* WRITERFILTERSTATUS: table: SettingsTable_attributedata */ |
| #if 0 //no values known, yet |
| |
| switch(Name) |
| { |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::: |
| break; |
| default: |
| { |
| } |
| } |
| #endif |
| } |
| |
| void SettingsTable::lcl_sprm(Sprm& rSprm) |
| { |
| sal_uInt32 nSprmId = rSprm.getId(); |
| |
| Value::Pointer_t pValue = rSprm.getValue(); |
| sal_Int32 nIntValue = pValue->getInt(); |
| (void)nIntValue; |
| rtl::OUString sStringValue = pValue->getString(); |
| |
| //printf ( "SettingsTable::sprm(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)nSprmId, (unsigned int)nIntValue, ::rtl::OUStringToOString(sStringValue, RTL_TEXTENCODING_DONTKNOW).getStr()); |
| |
| /* WRITERFILTERSTATUS: table: SettingsTable_sprm */ |
| switch(nSprmId) |
| { |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_zoom: // 92469; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_proofState: // 92489; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_attachedTemplate: // 92491; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_hdrShapeDefaults: // 92544; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_footnotePr: // 92545; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_endnotePr: // 92546; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_compat: // 92547; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_themeFontLang: // 92552; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_shapeDefaults: // 92560; |
| |
| //PropertySetValues - need to be resolved |
| { |
| writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); |
| if( pProperties.get()) |
| pProperties->resolve(*this); |
| } |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_stylePaneFormatFilter: // 92493; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_defaultTabStop: // 92505; |
| m_pImpl->m_nDefaultTabStop = nIntValue; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_noPunctuationKerning: // 92526; |
| m_pImpl->m_bNoPunctuationKerning = nIntValue ? true : false; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_characterSpacingControl: // 92527; |
| m_pImpl->m_sCharacterSpacing = sStringValue; // doNotCompress, compressPunctuation, compressPunctuationAndJapaneseKana |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_doNotIncludeSubdocsInStats: // 92554; // Do Not Include Content in Text Boxes, Footnotes, and Endnotes in Document Statistics) |
| m_pImpl->m_doNotIncludeSubdocsInStats = nIntValue? true : false; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_decimalSymbol: // 92562; |
| m_pImpl->m_sDecimalSymbol = sStringValue; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_listSeparator: // 92563; |
| m_pImpl->m_sListSeparatorForFields = sStringValue; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_rsids: // 92549; revision save Ids - probably not necessary |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Settings_hyphenationZone: // 92508; |
| m_pImpl->m_nHyphenationZone = nIntValue; |
| break; |
| /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ |
| case NS_ooxml::LN_CT_Compat_useFELayout: // 92422; |
| // useFELayout (Do Not Bypass East Asian/Complex Script Layout Code - support of old versions of Word - ignored) |
| break; |
| case NS_ooxml::LN_CT_Settings_trackRevisions: |
| { |
| m_pImpl->m_bRecordChanges = bool(rSprm.getValue( )->getInt( ) ); |
| } |
| break; |
| case NS_ooxml::LN_CT_Settings_documentProtection: |
| { |
| resolveSprmProps(*this, rSprm); |
| } |
| break; |
| default: |
| { |
| #ifdef DEBUG_DMAPPER_SETTINGS_TABLE |
| dmapper_logger->element("unhandled"); |
| #endif |
| } |
| } |
| } |
| |
| void SettingsTable::lcl_entry(int /*pos*/, writerfilter::Reference<Properties>::Pointer_t ref) |
| { |
| // printf ( "SettingsTable::entry\n"); |
| ref->resolve(*this); |
| } |
| //returns default TabStop in 1/100th mm |
| |
| /*-- 22.09.2009 10:29:32--------------------------------------------------- |
| |
| -----------------------------------------------------------------------*/ |
| int SettingsTable::GetDefaultTabStop() const |
| { |
| return ConversionHelper::convertTwipToMM100( m_pImpl->m_nDefaultTabStop ); |
| } |
| |
| void SettingsTable::ApplyProperties( uno::Reference< text::XTextDocument > xDoc ) |
| { |
| uno::Reference< beans::XPropertySet> xDocProps( xDoc, uno::UNO_QUERY ); |
| |
| // Record changes value |
| xDocProps->setPropertyValue( ::rtl::OUString::createFromAscii( "RecordChanges" ), uno::makeAny( m_pImpl->m_bRecordChanges ) ); |
| } |
| |
| |
| }//namespace dmapper |
| } //namespace writerfilter |