#ifndef __SCOSTIME_GUI_H
# define __SCOSTIME_GUI_H
+#include "version.h"
+
#include <Plugins/iPlugin>
#include <QObject>
{
public:
+ /// Type of the date/time entry
+ enum Type
+ {
+ Invalid,
+ ASD,
+ ISO,
+ CUC
+ };
+
+ /**
+ * Creates an invalid date/time value with the default epoch
+ */
+ DateTime();
+
/**
- * Creates an invalid date/time value
+ * Dtor
*/
- DateTime() {}
+ ~DateTime();
/**
- * Creates a date/time value from the string.
+ * Sets the date/time value from a string.
* @param s Input string
* @param epoch Epoch
+ * @return Type of the input string
*
* The input string can be:
* @li Date/time in ISO format yyyy-MM-ddThh:mm[:ss[.zzz]]
*
* If the string is invalid, creates an invalid date/time value.
*/
- DateTime(String const & s, String const & epoch);
+ Type setDateTime(QString const & s, QDateTime const & epoch);
+
+ /**
+ * Sets the date/time value from a string using the previously set epoch.
+ * @param s Input string
+ * @return Type of the input string
+ *
+ * The input string can be:
+ * @li Date/time in ISO format yyyy-MM-ddThh:mm[:ss[.zzz]]
+ * @li Date/time in ASD format yyyy.ddd.hh.mm[.ss[.zzz]]
+ * @li CUC hex string cccccccc[ffff]
+ *
+ * If the input string is invalid or no epoch is set, creates an invalid
+ * date/time value.
+ */
+ Type setDateTime(QString const & s);
+
+ /**
+ * Sets the epoch
+ * @param epoch Epoch
+ */
+ void setEpoch(QDateTime const & epoch);
+
+ /**
+ * Returns the current epoch
+ */
+ QDateTime const & epoch() const { return mEpoch; }
/**
* Returns true if the date/time value is valid.
*/
bool isValid() const { return mDateTime.isValid(); }
+ /**
+ * Returns the type of the date/time string from which the date/time
+ * value was created.
+ */
+ Type type() const { return mType; }
+
+ /**
+ * Returns the current date/time value
+ */
+ QDateTime const & dateTime() const { return mDateTime; }
+
/**
* Returns the date/time value a string in the ISO format yyyy-MM-ddThh:mm:ss.zzz
*/
- QString asIsoString() const;
+ QString asISOstring() const;
/**
* Returns the date/time value as a string in the ASD format yyyy.ddd.hh.mm.ss.zzz
*/
- QString asAsdString() const;
+ QString asASDstring() const;
/**
* Returns the date/time value as a CUC hex string in the format ccccccccffff
*/
- QString asCucHexString() const;
+ QString asCUChexString() const;
-private:
+private: // methods
- /// Date/time value
- QDateTime mDateTime;
+ Type getDateTimeType(QString const & s) const;
+
+ QDateTime strToDateTime(QString const & s, Type t) const;
+
+
+private: // members
+
+ /// Type of the input string
+ Type mType;
/// Epoch
QDateTime mEpoch;
+ /// Date/time value
+ QDateTime mDateTime;
+
+ /// Regular expression for ISO date/time strings
+ QRegExp * mRxIso;
+
+ /// Regular expression for ASD date/time strings
+ QRegExp * mRxAsd;
+
+ /// Regular expression for CUC date/time strings
+ QRegExp * mRxCUC;
+
};
} // namespace eVaf::ScosTime::Internal
{
Q_OBJECT
Q_INTERFACES(eVaf::Plugins::iPlugin)
-
- enum DateTimeType
- {
- InvalidDateTime,
- AsdDateTime,
- IsoDateTime
- };
+ Q_PLUGIN_METADATA(IID VER_MODULE_NAME_STR)
enum ValidEntry
{
private: // Methods
- DateTimeType getDateTimeType(QString const & s) const;
-
- QDateTime strToDateTime(QString const & s, DateTimeType type) const;
-
- QString dateTimeToAsdStr(QDateTime const & tm) const;
-
- void setDateTimeFromCucHex(QString const & s);
-
- void setCucHexFromDateTime(QString const & s, DateTimeType type);
-
private: // Members
/// Flag indicating that the module is ready
bool mReady;
- /// Last valid entry (field modified by the user)
- ValidEntry mLastValidEntry;
+ /// Current date/time value
+ Internal::DateTime mDateTime;
- /// Regular expressions
- QRegExp * rxIsoDateTime;
- QRegExp * rxAsdDateTime;
+ /// Last date/time format type used in the date/time entry field
+ Internal::DateTime::Type mLastDateTimeType;
/// Widgets on the screen
QComboBox * wEpoch;