]> vaikene.ee Git - evaf/blobdiff - src/apps/ScosTime/gui.h
The ScosTime application now more user friendly.
[evaf] / src / apps / ScosTime / gui.h
index 90f33c2f90edf3e269acf84c022e355ce79d0d30..1ce7972344dfb574bacde9050f66c03385adb0f8 100644 (file)
@@ -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;