/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 .
*/
// Version
sal_uInt16 nVersionId = 0x0006;
DBG_ASSERT((getPersistenceFlags() & ~PF_SPECIAL_FLAGS) == 0, "OEditBaseModel::write : invalid special version flags !"); // please don't use other flags, older versions can't interpret them !
// since version 5 we write the help text
writeHelpTextCompatibly(_rxOutStream); // (that's potentially bad : at the time I added the above line we had two derived classes : OEditModel and // OFormattedModel. The first one does not have an own version handling, so it can't write the help text itself, // the second one does its own writing (reading) after calling our method, so normally we shouldn't write any // additional members as this is not compatible to older office versions. // We decided to place the writing of the help text here as it seems the less worse alternative. There is no delivered // office version including formatted controls (and thus the OFormattedModel), and the OFormattedModel::read seems // robust against this change (as it will read a wrong and unknown file version and thus set its members to defaults).
if ((nVersionId & PF_HANDLE_COMMON_PROPS) != 0)
writeCommonEditProperties(_rxOutStream);
// !!! properties common to all OEditBaseModel derived classes should be written in writeCommonEditProperties !!!
}
if ((nAnyMask & FILTERPROPOSAL) == FILTERPROPOSAL)
m_bFilterProposal = true;
}
if (nVersion > 4)
readHelpTextCompatibly(_rxInStream);
if (bHandleCommonProps)
readCommonEditProperties(_rxInStream);
// After reading, display default values if ( !getControlSource().isEmpty() ) // (not if we don't have a control source - the "State" property acts like it is persistent, then)
resetNoBroadcast();
};
void OEditBaseModel::defaultCommonEditProperties()
{
OBoundControlModel::defaultCommonProperties(); // no own common properties at the moment
}
Reference<XMarkableStream> xMark(_rxInStream, UNO_QUERY);
DBG_ASSERT(xMark.is(), "OBoundControlModel::readCommonProperties : can only work with markable streams !");
sal_Int32 nMark = xMark->createMark();
// read properties common to all OBoundControlModels
OBoundControlModel::readCommonProperties(_rxInStream);
// read properties common to all OEditBaseModels
// skip the remaining bytes
xMark->jumpToMark(nMark);
_rxInStream->skipBytes(nLen);
xMark->deleteMark(nMark);
}
void OEditBaseModel::writeCommonEditProperties(const Reference<XObjectOutputStream>& _rxOutStream)
{
Reference<XMarkableStream> xMark(_rxOutStream, UNO_QUERY);
DBG_ASSERT(xMark.is(), "OEditBaseModel::writeCommonProperties : can only work with markable streams !");
sal_Int32 nMark = xMark->createMark();
// a placeholder where we will write the overall length (later in this method)
sal_Int32 nLen = 0;
_rxOutStream->writeLong(nLen);
// write properties common to all OBoundControlModels
OBoundControlModel::writeCommonProperties(_rxOutStream);
// write properties common to all OEditBaseModels
// close the block - write the correct length at the beginning
nLen = xMark->offsetToMark(nMark) - sizeof(nLen);
xMark->jumpToMark(nMark);
_rxOutStream->writeLong(nLen);
xMark->jumpToFurthest();
xMark->deleteMark(nMark);
}
void OEditBaseModel::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
{ switch (nHandle)
{ case PROPERTY_ID_EMPTY_IS_NULL:
rValue <<= m_bEmptyIsNull; break; case PROPERTY_ID_FILTERPROPOSAL:
rValue <<= m_bFilterProposal; break; case PROPERTY_ID_DEFAULT_TEXT:
rValue <<= m_aDefaultText; break; case PROPERTY_ID_DEFAULT_VALUE: case PROPERTY_ID_DEFAULT_DATE: case PROPERTY_ID_DEFAULT_TIME:
rValue = m_aDefault; break; default:
OBoundControlModel::getFastPropertyValue(rValue, nHandle);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.