/* -*- 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 .
*/
#pragma once
#include"conditio.hxx" #include"scdllapi.h"
namespace weld { class Window; }
namespace sc {
struct RefUpdateContext;
}
namespace vcl { class ILibreOfficeKitNotifier; }
class ScPatternAttr; class ScTokenArray; class ScTypedStrData; struct ScValidationDataIsNumeric;
/** Returns true, if the validation cell will show a selection list. @descr Use this instead of GetListType() which returns the raw property
regardless of the validation type. */ bool HasSelectionList() const; /** Tries to fill the passed collection with list validation entries. @descr Fills the list only, if this is a list validation and IsShowList() is enabled. @param rStrings (out-param) The string list to fill with list validation entries.
@return true = rStrings has been filled with at least one entry. */
SC_DLLPUBLIC bool FillSelectionList(std::vector<ScTypedStrData>& rStrings, const ScAddress& rPos) const;
// with string: during input, with cell: for detective / RC_FORCED bool IsDataValid( const OUString& rTest, const ScPatternAttr& rPattern, const ScAddress& rPos ) const;
// Custom validations (SC_VALID_CUSTOM) should be validated using this specific method. // Take care that internally this method commits to the to be validated cell the new input, // in order to be able to interpret the validating boolean formula on the new input. // After the formula has been evaluated the original cell content is restored. // At present is only used in ScInputHandler::EnterHandler: handling this case in the // regular IsDataValid method would have been unsafe since it can be invoked // by ScFormulaCell::InterpretTail.
struct CustomValidationPrivateAccess
{ // so IsDataValidCustom can be invoked only by ScInputHandler methods friendclass ScInputHandler; private:
CustomValidationPrivateAccess() {}
};
bool IsEmpty() const;
sal_uInt32 GetKey() const { return nKey; } void SetKey(sal_uInt32 nNew) { nKey = nNew; } // only if not inserted!
SC_DLLPUBLIC bool EqualEntries( const ScValidationData& r ) const; // for undo
// sort (using std::set) by index booloperator < ( const ScValidationData& r ) const { return nKey < r.nKey; }
private: /** Tries to fill the passed collection with list validation entries. @descr Fills the list only if it is non-NULL, @param pStrings (out-param) Optionally NULL, string list to fill with list validation entries. @param pCell can be NULL if it is not necessary to which element in the list is selected. @param rPos the base address for relative references. @param rTokArr Formula token array. @param rMatch (out-param) the index of the first item that matched, -1 if nothing matched.
@return true = Cell range found, rRange is valid, or an error entry stuffed into the list if pCell==NULL. */ bool GetSelectionFromFormula(
std::vector<ScTypedStrData>* pStrings, const ScRefCellValue& rCell, const ScAddress& rPos, const ScTokenArray& rTokArr, int& rMatch) const;
/** Tests, if pCell is equal to what the passed token array represents. */ bool IsEqualToTokenArray( const ScRefCellValue& rCell, const ScAddress& rPos, const ScTokenArray& rTokArr ) const;
/** Tests, if contents of pCell occur in cell range referenced by own formula, or in a string list. */ bool IsListValid( const ScRefCellValue& rCell, const ScAddress& rPos ) const;
/** Tests, if string or numeric data has valid text length. @param pDataNumeric nullptr if string data to be tested, else for numeric data a properly initialized ScValidationDataIsNumeric struct, see implementation.
*/ bool IsDataValidTextLen( std::u16string_view rTest, const ScAddress& rPos,
ScValidationDataIsNumeric* pDataNumeric ) const;
};
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 und die Messung sind noch experimentell.