/** * @file ScosTime/gui.h * @brief GUI for the ScosTime application * @author Enar Vaikene * * Copyright (c) 2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * * This file can be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * the following information to ensure the GNU General Public License version * 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * Alternatively, this file may be used in accordance with the Commercial License * Agreement provided with the Software. */ #ifndef __SCOSTIME_GUI_H # define __SCOSTIME_GUI_H #include #include #include #include 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. * * This module adds a GUI window to the ScosTime application using the SdiWindow module. */ class Module : public Plugins::iPlugin { Q_OBJECT Q_INTERFACES(eVaf::Plugins::iPlugin) enum ValidEntry { NoValidEntry, DateTimeEntry, CUCEntry }; public: Module(); virtual ~Module(); virtual bool init(const QString & args); virtual void done(); virtual bool isReady() const { return mReady; } private slots: void epochChanged(QString const & s); void dateTimeClicked(); void dateTimeEdited(QString const & s); void cucHexEdited(QString const & s); private: // Methods 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; QPushButton * wConvertDateTime; QLineEdit * wCucHex; }; } // namespace eVaf::ScosTime } // namespace eVaf #endif // gui.h