File indexing completed on 2024-04-21 03:41:35
0001 /* 0002 SPDX-FileCopyrightText: 2003, 2004, 2005 Carsten Niehaus <cniehaus@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "element.h" 0008 0009 0010 #include <KUnitConversion/Converter> 0011 0012 Element::Element() = default; 0013 0014 QVariant Element::dataAsVariant(ChemicalDataObject::BlueObelisk type) const 0015 { 0016 for (const ChemicalDataObject &o : std::as_const(dataList)) { 0017 if (o.type() == type) { 0018 return o.value(); 0019 } 0020 } 0021 return {}; 0022 } 0023 0024 QVariant Element::dataAsVariant(ChemicalDataObject::BlueObelisk type, int unit) const 0025 { 0026 for (const ChemicalDataObject &o : dataList) { 0027 if (o.type() == type) { 0028 if (unit == KUnitConversion::NoUnit) { 0029 return o.value(); 0030 } 0031 KUnitConversion::Value data(o.value().toDouble(), KUnitConversion::UnitId(o.unit())); 0032 return {data.convertTo(KUnitConversion::UnitId(unit)).number()}; 0033 } 0034 } 0035 return {}; 0036 } 0037 0038 QString Element::dataAsString(ChemicalDataObject::BlueObelisk type) const 0039 { 0040 return dataAsVariant(type).toString(); 0041 } 0042 0043 QString Element::dataAsString(ChemicalDataObject::BlueObelisk type, int unit) const 0044 { 0045 return dataAsVariant(type, unit).toString(); 0046 } 0047 0048 QString Element::dataAsStringWithUnit(ChemicalDataObject::BlueObelisk type, int unit) const 0049 { 0050 QString valueAndUnit(QString::number(dataAsVariant(type, unit).toDouble(), 'g', 4)); 0051 0052 if (valueAndUnit.isEmpty()) { 0053 return {}; 0054 } 0055 0056 valueAndUnit.append(" "); 0057 valueAndUnit.append(KUnitConversion::Converter().unit(KUnitConversion::UnitId(unit)).symbol()); 0058 return valueAndUnit; 0059 } 0060 0061 Element::~Element() = default; 0062 0063 void Element::addData(const ChemicalDataObject &o) 0064 { 0065 dataList.append(o); 0066 } 0067 0068 void Element::addData(const QVariant &value, ChemicalDataObject::BlueObelisk type) 0069 { 0070 ChemicalDataObject tmp(value, type); 0071 dataList.append(tmp); 0072 }