#ifndef __SCOSTIME_GUI_H
# define __SCOSTIME_GUI_H
+#include "version.h"
+
#include <Plugins/iPlugin>
#include <QObject>
class QLineEdit;
class QComboBox;
+class QRegExp;
+class QPushButton;
namespace eVaf {
namespace ScosTime {
+namespace Internal {
+
+/**
+ * SCOS date/time class
+ */
+class DateTime
+{
+public:
+
+ /// Type of the date/time entry
+ enum Type
+ {
+ Invalid,
+ ASD,
+ ISO,
+ CUC
+ };
+
+ /**
+ * Creates an invalid date/time value with the default epoch
+ */
+ DateTime();
+
+ /**
+ * Dtor
+ */
+ ~DateTime();
+
+ /**
+ * 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]]
+ * @li Date/time in ASD format yyyy.ddd.hh.mm[.ss[.zzz]]
+ * @li CUC hex string cccccccc[ffff]
+ *
+ * If the string is invalid, creates an invalid date/time value.
+ */
+ 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;
+
+ /**
+ * Returns the date/time value as a string in the ASD format yyyy.ddd.hh.mm.ss.zzz
+ */
+ QString asASDstring() const;
+
+ /**
+ * Returns the date/time value as a CUC hex string in the format ccccccccffff
+ */
+ QString asCUChexString() const;
+
+
+private: // methods
+
+ 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
+
/**
* Graphical User Interface for the ScosTime application.
*
{
Q_OBJECT
Q_INTERFACES(eVaf::Plugins::iPlugin)
+ Q_PLUGIN_METADATA(IID VER_MODULE_NAME_STR)
+
+ enum ValidEntry
+ {
+ NoValidEntry,
+ DateTimeEntry,
+ CUCEntry
+ };
public:
private slots:
+ void epochChanged(QString const & s);
+
void dateTimeClicked();
- void hexClicked();
+ void dateTimeEdited(QString const & s);
+
+ void cucHexEdited(QString const & s);
private: // Methods
- QDateTime strToDateTime(QString const & s) const;
private: // Members
/// Flag indicating that the module is ready
bool mReady;
+ /// Current date/time value
+ Internal::DateTime mDateTime;
+
+ /// Last date/time format type used in the date/time entry field
+ Internal::DateTime::Type mLastDateTimeType;
+
/// Widgets on the screen
QComboBox * wEpoch;
QLineEdit * wDateTime;
- QLineEdit * wHex;
+ QPushButton * wConvertDateTime;
+ QLineEdit * wCucHex;
};