/* -*- 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.
Hier finden Sie eine Liste der gelagerten Fremdprodukte
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.