/* Copyright 2006-2020 The QElectroTech Team This file is part of QElectroTech. QElectroTech is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. QElectroTech 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 General Public License for more details. You should have received a copy of the GNU General Public License along with QElectroTech. If not, see . */ #include "numerotationcontext.h" #include #include "qet.h" /** Constructor */ NumerotationContext::NumerotationContext(){ } /** Constructor from xml */ NumerotationContext::NumerotationContext(QDomElement &e) { fromXml(e); } /** @brief NumerotationContext::clear, clear the content */ void NumerotationContext::clear () { content_.clear(); } /** @brief NumerotationContext::addValue add a new value on the contexte @param type the type of value @param value the value itself @param increase the increase number of value @param initialvalue @return true if value is append */ bool NumerotationContext::addValue(const QString &type, const QVariant &value, const int increase, const int initialvalue) { if (!keyIsAcceptable(type) && !value.canConvert(QVariant::String)) return false; if (keyIsNumber(type) && !value.canConvert(QVariant::Int)) return false; QString valuestr = value.toString(); valuestr.remove("|"); content_ << type + "|" + valuestr + "|" + QString::number(increase) + "|" + QString::number(initialvalue); return true; } /** @brief NumerotationContext::operator [] @param i @return the string at position i */ QString NumerotationContext::operator [] (const int &i) const { return (content_.at(i)); } /** @brief NumerotationContext::operator << , append other */ void NumerotationContext::operator << (const NumerotationContext &other) { for (int i=0; i 0) return false; return true; } /** @brief NumerotationContext::itemAt @param i @return the content at position i 1:type 2:value 3:increase */ QStringList NumerotationContext::itemAt(const int i) const { return (content_.at(i).split("|")); } /** @brief validRegExpNum @return all type use to numerotation */ QString NumerotationContext::validRegExpNum () const { return ("unit|unitfolio|ten|tenfolio|hundred|hundredfolio|string|idfolio|folio|plant|locmach|elementline|elementcolumn|elementprefix"); } /** @brief NumerotationContext::validRegExpNumber @return all type represents a number */ QString NumerotationContext::validRegExpNumber() const { return ("unit|unitfolio|ten|tenfolio|hundred|hundredfolio"); } /** @brief NumerotationContext::keyIsAcceptable @return true if type is acceptable */ bool NumerotationContext::keyIsAcceptable(const QString &type) const { return (type.contains(QRegExp(validRegExpNum()))); } /** @brief NumerotationContext::keyIsNumber @return true if type represent a number */ bool NumerotationContext::keyIsNumber(const QString &type) const { return (type.contains(QRegExp(validRegExpNumber()))); } /** @brief NumerotationContext::toXml Save the numerotation context in a QDomElement under the element name str */ QDomElement NumerotationContext::toXml(QDomDocument &d, const QString& str) { QDomElement num_auto = d.createElement(str); for (int i=0; i