From 3b9d0b175e45e69b51525695c618c2b05720038f Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Fri, 12 May 2023 11:31:27 +0200
Subject: [PATCH] BC: Add date custom editor.

---
 src/View/BoundaryCondition/Edit/Table.py | 40 +++++++++++++++++++-----
 1 file changed, 32 insertions(+), 8 deletions(-)

diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py
index d41a3551..99f324f8 100644
--- a/src/View/BoundaryCondition/Edit/Table.py
+++ b/src/View/BoundaryCondition/Edit/Table.py
@@ -10,12 +10,12 @@ from View.ListedSubWindow import ListedSubWindow
 from PyQt5.QtCore import (
     Qt, QVariant, QAbstractTableModel,
     QCoreApplication, QModelIndex, pyqtSlot,
-    QRect, QTime,
+    QRect, QTime, QDateTime,
 )
 
 from PyQt5.QtWidgets import (
     QTableView, QAbstractItemView, QSpinBox,
-    QTimeEdit, QItemDelegate,
+    QTimeEdit, QDateTimeEdit, QItemDelegate,
 )
 
 from Model.BoundaryCondition.BoundaryConditionTypes import (
@@ -73,6 +73,26 @@ class ExtendedTimeEdit(AWidget):
 
         return timedelta(days=days, seconds=secs)
 
+class ExtendedDateTimeEdit(AWidget):
+    def __init__(self, parent=None):
+        super(ExtendedDateTimeEdit, self).__init__(
+            ui="extendedDateTimeEdit",
+            parent=parent
+        )
+        self.parent = parent
+
+        self.dateTimeEdit = self.find(QDateTimeEdit, "dateTimeEdit")
+
+    def set_time(self, time):
+        qdatetime = QDateTime.fromString(
+            time,
+            "yyyy-MM-dd hh:mm:ss"
+        )
+        self.dateTimeEdit.setDateTime(qdatetime)
+
+    def get_time(self):
+        time = self.dateTimeEdit.dateTime().toPyDateTime()
+        return time
 
 class ExTimeDelegate(QItemDelegate):
     def __init__(self, data=None, mode="time", parent=None):
@@ -82,18 +102,22 @@ class ExTimeDelegate(QItemDelegate):
         self._mode = mode
 
     def createEditor(self, parent, option, index):
-        self.editor = ExtendedTimeEdit(parent=parent)
+        if self._mode == "time":
+            self.editor = ExtendedTimeEdit(parent=parent)
+        else:
+            self.editor = ExtendedDateTimeEdit(parent=parent)
         value = index.data(Qt.DisplayRole)
         self.editor.set_time(value)
+        print(value)
         return self.editor
 
-    def setEditorData(self, editor, index):
-        value = index.data(Qt.DisplayRole)
-        self.editor.currentTextChanged.connect(self.currentItemChanged)
-
     def setModelData(self, editor, model, index):
         time = editor.get_time()
-        model.setData(index, int(time.total_seconds()))
+        if self._mode == "time":
+            model.setData(index, int(time.total_seconds()))
+        else:
+            print(time.timestamp())
+            model.setData(index, int(time.timestamp()))
         editor.close()
         editor.deleteLater()
 
-- 
GitLab