X-Git-Url: https://vaikene.ee/gitweb/gitweb.cgi?p=evaf;a=blobdiff_plain;f=src%2Fapps%2FScosTime%2Fgui.h;fp=src%2Fapps%2FScosTime%2Fgui.h;h=1ce7972344dfb574bacde9050f66c03385adb0f8;hp=90f33c2f90edf3e269acf84c022e355ce79d0d30;hb=125303c933569fe238a087e5f24128ff2cb30e0a;hpb=8c1076918aee67a8d6adae31fc14156c9779d471 diff --git a/src/apps/ScosTime/gui.h b/src/apps/ScosTime/gui.h index 90f33c2..1ce7972 100644 --- a/src/apps/ScosTime/gui.h +++ b/src/apps/ScosTime/gui.h @@ -43,15 +43,30 @@ class DateTime { public: + /// Type of the date/time entry + enum Type + { + Invalid, + ASD, + ISO, + CUC + }; + /** - * Creates an invalid date/time value + * Creates an invalid date/time value with the default epoch */ - DateTime() {} + DateTime(); /** - * Creates a date/time value from the string. + * 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]] @@ -60,37 +75,93 @@ public: * * 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 @@ -105,13 +176,6 @@ class Module : public Plugins::iPlugin Q_OBJECT Q_INTERFACES(eVaf::Plugins::iPlugin) - enum DateTimeType - { - InvalidDateTime, - AsdDateTime, - IsoDateTime - }; - enum ValidEntry { NoValidEntry, @@ -145,28 +209,17 @@ private slots: 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;