aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h
new file mode 100644
index 0000000..59bd111
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h
@@ -0,0 +1,84 @@
+#ifndef MULTIEDITORDATETIME_H
+#define MULTIEDITORDATETIME_H
+
+#include "multieditorwidget.h"
+#include "multieditorwidgetplugin.h"
+#include "plugins/builtinplugin.h"
+#include <QStringList>
+#include <QDateTime>
+
+class QCalendarWidget;
+class QDateTimeEdit;
+class QLabel;
+
+class GUI_API_EXPORT MultiEditorDateTime : public MultiEditorWidget
+{
+ Q_OBJECT
+ public:
+ explicit MultiEditorDateTime(QWidget *parent = 0);
+
+ static void staticInit();
+
+ void setValue(const QVariant& value);
+ QVariant getValue();
+ bool needsValueUpdate();
+
+ QList<QWidget*> getNoScrollWidgets();
+
+ bool getReadOnly() const;
+ void setReadOnly(bool value);
+ QString getTabLabel();
+ void focusThisWidget();
+
+ protected:
+ void updateCalendarDisplay();
+ void setDisplayFormat(const QString& format);
+
+ virtual QStringList getParsingFormats();
+
+ QDateTimeEdit* dateTimeEdit = nullptr;
+ bool showCalendars = true;
+
+ private:
+ enum FormatType
+ {
+ STRING,
+ JULIAN_DAY,
+ UNIXTIME,
+ OTHER
+ };
+
+ void updateReadOnlyDisplay();
+ QDateTime fromString(const QString& value);
+
+ static QStringList formats;
+
+ QLabel* dateTimeLabel = nullptr;
+ QCalendarWidget* calendar = nullptr;
+ QString originalValueFormat;
+ FormatType formatType;
+ bool updatingCalendar = false;
+ bool readOnly = false;
+
+ private slots:
+ void calendarDateChanged();
+ void dateChanged(const QDate& date);
+ void timeChanged(const QTime& time);
+};
+
+class GUI_API_EXPORT MultiEditorDateTimePlugin : public BuiltInPlugin, public MultiEditorWidgetPlugin
+{
+ Q_OBJECT
+
+ SQLITESTUDIO_PLUGIN_AUTHOR("sqlitestudio.pl")
+ SQLITESTUDIO_PLUGIN_DESC("Date and time data editor.")
+ SQLITESTUDIO_PLUGIN_TITLE("Date and time")
+ SQLITESTUDIO_PLUGIN_VERSION(10000)
+
+ public:
+ MultiEditorWidget* getInstance();
+ bool validFor(const DataType& dataType);
+ int getPriority(const DataType& dataType);
+};
+
+#endif // MULTIEDITORDATETIME_H