1#ifndef LIBS_GUI_CEDITNUM_HPP_
2#define LIBS_GUI_CEDITNUM_HPP_
64 template<iv::concepts::IntegerType T>
67 if constexpr (std::is_same_v<T, uint64_t>)
71 else if constexpr (std::is_same_v<T, uint32_t>)
75 else if constexpr (std::is_same_v<T, uint16_t>)
79 else if constexpr (std::is_same_v<T, uint8_t>)
83 else if constexpr (std::is_same_v<T, int64_t>)
87 else if constexpr (std::is_same_v<T, int32_t>)
91 else if constexpr (std::is_same_v<T, int16_t>)
99 template<iv::concepts::IntegerType T, iv::concepts::IntegerType R1, iv::concepts::IntegerType R2>
100 requires std::is_convertible_v<R1, T> && std::is_convertible_v<R2, T>
104 if (
static_cast<T
>(minValue) > std::numeric_limits<T>::max())
106 throw std::out_of_range(
"minValue exceeds the limits of type T");
108 if (
static_cast<T
>(maxValue) > std::numeric_limits<T>::max())
110 throw std::out_of_range(
"maxValue exceeds the limits of type T");
113 if constexpr (std::is_same_v<T, uint64_t>)
116 static_cast<uint64_t
>(maxValue), numMaxChar);
118 else if constexpr (std::is_same_v<T, uint32_t>)
121 static_cast<uint32_t
>(maxValue), numMaxChar);
123 else if constexpr (std::is_same_v<T, uint16_t>)
126 static_cast<uint16_t
>(maxValue), numMaxChar);
128 else if constexpr (std::is_same_v<T, uint8_t>)
131 static_cast<uint8_t
>(maxValue), numMaxChar);
133 else if constexpr (std::is_same_v<T, int64_t>)
136 static_cast<int64_t
>(maxValue), numMaxChar);
138 else if constexpr (std::is_same_v<T, int32_t>)
141 static_cast<int32_t
>(maxValue), numMaxChar);
143 else if constexpr (std::is_same_v<T, int16_t>)
146 static_cast<int16_t
>(maxValue), numMaxChar);
152 template<iv::concepts::FloatingPo
intType T>
156 if constexpr (std::is_same_v<T, double>)
160 else if constexpr (std::is_same_v<T, float>)
168 template<iv::concepts::FloatingPo
intType T>
170 uint8_t numMaxDecimals, uint8_t numMaxChar)
172 if constexpr (std::is_same_v<T, double>)
177 else if constexpr (std::is_same_v<T, float>)
186 uint16_t numMaxChar);
214 requires std::is_arithmetic_v<T>
224 static CEditNum *
createDouble(
const std::string &nameField,
double *number, uint8_t numMaxDecimals,
227 double maxDouble, uint8_t numMaxDecimals, uint8_t numMaxChar);
234 int64_t maxInt64, int16_t numMaxChar);
236 int32_t maxInt32, int16_t numMaxChar);
238 int16_t maxInt16, int16_t numMaxChar);
246 uint64_t maxUInt64, uint16_t numMaxChar);
248 uint32_t maxUInt32, uint16_t numMaxChar);
250 uint16_t maxUInt16, uint16_t numMaxChar);
252 uint8_t maxUInt8,
unsigned short numMaxChar);
254 bool filterChar(
char car, std::string *filterReasonOpt)
override;
257 CEditNum(SEditNum **dataPrivate, std::string *strValue,
unsigned short numMaxChar);
Definition CEditNum.hpp:15
bool getValueUInt32_t(uint32_t *value) const
Definition CEditNum.cpp:818
bool getValueInt16_t(int16_t *value) const
Definition CEditNum.cpp:768
static CEditNum * createEditInt16_t(const std::string &nameField, int16_t *number, uint16_t numMaxChar)
Definition CEditNum.cpp:466
bool filterCharAtEnd(char car, std::string *filterReasonOpt) override
Definition CEditNum.cpp:965
static CEditNum * createInteger(const std::string &nameField, T &valueRef, const uint16_t numMaxChar)
Definition CEditNum.hpp:65
const std::string & getNameField() const
Definition CEditNum.cpp:893
EPrvTypeEdit
Definition CEditNum.hpp:26
SEditNum * m_sEditNum
Definition CEditNum.hpp:259
static CEditNum * createEditUInt32_t(const std::string &nameField, uint32_t *number, uint16_t numMaxChar)
Definition CEditNum.cpp:538
static CEditNum * createEditUChar(const std::string &nameField, uint8_t *number, unsigned short numMaxChar)
Definition CEditNum.cpp:610
static CEditNum * createDoubleWithInterval(const std::string &nameField, double *number, double minDouble, double maxDouble, uint8_t numMaxDecimals, uint8_t numMaxChar)
Definition CEditNum.cpp:425
static CEditNum * createTime(const std::string &nameField, ePrvTimeEdit timeFormat, iv::types::milliseconds &time, uint16_t numMaxChar)
Definition CEditNum.cpp:638
void setValue(T value)
Definition CEditNum.hpp:205
bool getValueInt64_t(int64_t *value) const
Definition CEditNum.cpp:718
bool filterChar(char car, std::string *filterReasonOpt) override
Definition CEditNum.cpp:899
static CEditNum * createEditInt32WithInterval(const std::string &nameField, int32_t *number, int32_t minInt32, int32_t maxInt32, int16_t numMaxChar)
Definition CEditNum.cpp:494
static CEditNum * createEditUInt32WithInterval(const std::string &nameField, uint32_t *number, uint32_t minUInt32, uint32_t maxUInt32, uint16_t numMaxChar)
Definition CEditNum.cpp:578
ePrvTimeEdit
Definition CEditNum.hpp:18
~CEditNum() override
Definition CEditNum.cpp:688
bool getValueInt32_t(int32_t *value) const
Definition CEditNum.cpp:743
void setInterval(T minValue, T maxValue)
Definition CEditNum.hpp:213
static CEditNum * createEditUInt16WithInterval(const std::string &nameField, uint16_t *number, uint16_t minUInt16, uint16_t maxUInt16, uint16_t numMaxChar)
Definition CEditNum.cpp:594
CEditNum(SEditNum **dataPrivate, std::string *strValue, unsigned short numMaxChar)
Definition CEditNum.cpp:672
bool getValueUInt16_t(uint16_t *value) const
Definition CEditNum.cpp:843
static CEditNum * createTimeWithInterval(const std::string &nameField, ePrvTimeEdit timeFormat, iv::types::milliseconds &time, iv::types::milliseconds minTime, iv::types::milliseconds maxTime, uint16_t numMaxChar)
Definition CEditNum.cpp:653
static CEditNum * createFloatingPoint(const std::string &nameField, T &valueRef, uint8_t numMaxDecimals, uint8_t numMaxChar)
Definition CEditNum.hpp:153
double getValueDouble() const
Definition CEditNum.cpp:695
static CEditNum * createEditUInt16_t(const std::string &nameField, uint16_t *number, uint16_t numMaxChar)
Definition CEditNum.cpp:550
static CEditNum * createFloatingPointWithInterval(const std::string &nameField, T &valueRef, T minValue, T maxValue, uint8_t numMaxDecimals, uint8_t numMaxChar)
Definition CEditNum.hpp:169
bool getValueUInt64_t(uint64_t *value) const
Definition CEditNum.cpp:793
static CEditNum * createEditInt16WithInterval(const std::string &nameField, int16_t *number, int16_t minInt16, int16_t maxInt16, int16_t numMaxChar)
Definition CEditNum.cpp:510
static CEditNum * createEditInt32_t(const std::string &nameField, int32_t *number, int32_t numMaxChar)
Definition CEditNum.cpp:454
static CEditNum * createEditInt64_t(const std::string &nameField, int64_t *number, uint16_t numMaxChar)
Definition CEditNum.cpp:442
static CEditNum * createEditUInt64_t(const std::string &nameField, uint64_t *number, uint16_t numMaxChar)
Definition CEditNum.cpp:526
static CEditNum * createEditInt64WithInterval(const std::string &nameField, int64_t *number, int64_t minInt64, int64_t maxInt64, int16_t numMaxChar)
Definition CEditNum.cpp:478
bool getValueUChar(uint8_t *value) const
Definition CEditNum.cpp:868
static CEditNum * createEditUCharWithInterval(const std::string &nameField, uint8_t *number, uint8_t minUInt8, uint8_t maxUInt8, unsigned short numMaxChar)
Definition CEditNum.cpp:622
static CEditNum * createIntegerWithInterval(const std::string &nameField, T &valueRef, R1 minValue, R2 maxValue, uint16_t numMaxChar)
Definition CEditNum.hpp:101
static CEditNum * createEditUInt64WithInterval(const std::string &nameField, uint64_t *number, uint64_t minUInt64, uint64_t maxUInt64, uint16_t numMaxChar)
Definition CEditNum.cpp:562
static CEditNum * createDouble(const std::string &nameField, double *number, uint8_t numMaxDecimals, uint8_t numMaxChar)
Definition CEditNum.cpp:411
void setText(const std::string &text)
Definition CEdit.cpp:288
Definition concepts.hpp:192
Definition concepts.hpp:187
static constexpr iv::types::timestamp MillisecondsInHours
Definition constants.hpp:37
static constexpr iv::types::timestamp MillisecondsInMinutes
Definition constants.hpp:36
static constexpr iv::types::timestamp MillisecondsInSeconds
Definition constants.hpp:35
static constexpr iv::types::timestamp MillisecondsInDays
Definition constants.hpp:38
uint64_t milliseconds
Definition types.hpp:22
std::string formatNumber(T number, std::optional< uint8_t > precision=std::nullopt)
Check if a string is a number, only applies precision to floating point numbers.
Definition stringUtils.hpp:343
Definition CEditNum.hpp:40
uint32_t * m_dataUInt32_t
Definition CEditNum.hpp:54
std::string m_nameField
Definition CEditNum.hpp:44
std::optional< ePrvTimeEdit > m_timeEdit
Definition CEditNum.hpp:42
double m_minData
Definition CEditNum.hpp:59
int16_t * m_dataInt16_t
Definition CEditNum.hpp:51
uint64_t * m_dataUInt64_t
Definition CEditNum.hpp:53
double m_maxData
Definition CEditNum.hpp:60
uint16_t * m_dataUInt16_t
Definition CEditNum.hpp:55
bool m_hasInterval
Definition CEditNum.hpp:58
int64_t * m_dataInt64_t
Definition CEditNum.hpp:49
EPrvTypeEdit m_type
Definition CEditNum.hpp:41
std::string m_strData
Definition CEditNum.hpp:45
int32_t * m_dataInt32_t
Definition CEditNum.hpp:50
uint8_t maxNumDecimals
Definition CEditNum.hpp:61
double * m_dataDouble
Definition CEditNum.hpp:47
uint8_t * m_dataUInt8_t
Definition CEditNum.hpp:56