Fix bug 869 - "QDateTimeEdit initial time problem"

Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
          Marcelo Lira <marcelo.lira@openbossa.org>
This commit is contained in:
Hugo Parente Lima 2011-06-07 17:04:14 -03:00
commit a698807fd0
5 changed files with 17 additions and 12 deletions

View file

@ -39,8 +39,8 @@ inline QDateTime Converter<QDateTime>::toCpp(PyObject* pyObj)
int hour = PyDateTime_DATE_GET_HOUR(pyObj); int hour = PyDateTime_DATE_GET_HOUR(pyObj);
int min = PyDateTime_DATE_GET_MINUTE(pyObj); int min = PyDateTime_DATE_GET_MINUTE(pyObj);
int sec = PyDateTime_DATE_GET_SECOND(pyObj); int sec = PyDateTime_DATE_GET_SECOND(pyObj);
int msec = PyDateTime_DATE_GET_MICROSECOND(pyObj); int usec = PyDateTime_DATE_GET_MICROSECOND(pyObj);
return QDateTime(QDate(year, month, day), QTime(hour, min, sec, msec)); return QDateTime(QDate(year, month, day), QTime(hour, min, sec, usec/1000));
} else { } else {
return ValueTypeConverter<QDateTime>::toCpp(pyObj); return ValueTypeConverter<QDateTime>::toCpp(pyObj);
} }

View file

@ -35,8 +35,8 @@ inline QTime Converter<QTime>::toCpp(PyObject* pyObj)
int hour = PyDateTime_TIME_GET_HOUR(pyObj); int hour = PyDateTime_TIME_GET_HOUR(pyObj);
int min = PyDateTime_TIME_GET_MINUTE(pyObj); int min = PyDateTime_TIME_GET_MINUTE(pyObj);
int sec = PyDateTime_TIME_GET_SECOND(pyObj); int sec = PyDateTime_TIME_GET_SECOND(pyObj);
int msec = PyDateTime_TIME_GET_MICROSECOND(pyObj); int usec = PyDateTime_TIME_GET_MICROSECOND(pyObj);
return QTime(hour, min, sec, msec); return QTime(hour, min, sec, usec/1000);
} else { } else {
return ValueTypeConverter<QTime>::toCpp(pyObj); return ValueTypeConverter<QTime>::toCpp(pyObj);
} }

View file

@ -661,7 +661,7 @@
QDate date = %CPPSELF.date(); QDate date = %CPPSELF.date();
QTime time = %CPPSELF.time(); QTime time = %CPPSELF.time();
if (!PyDateTimeAPI) PyDateTime_IMPORT; if (!PyDateTimeAPI) PyDateTime_IMPORT;
%PYARG_0 = PyDateTime_FromDateAndTime(date.year(), date.month(), date.day(), time.hour(), time.minute(), time.second(), time.msec()); %PYARG_0 = PyDateTime_FromDateAndTime(date.year(), date.month(), date.day(), time.hour(), time.minute(), time.second(), time.msec()*1000);
</inject-code> </inject-code>
</add-function> </add-function>
</value-type> </value-type>
@ -986,7 +986,7 @@
<add-function signature="toPython()" return-type="PyObject"> <add-function signature="toPython()" return-type="PyObject">
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
if (!PyDateTimeAPI) PyDateTime_IMPORT; if (!PyDateTimeAPI) PyDateTime_IMPORT;
%PYARG_0 = PyTime_FromTime(%CPPSELF.hour(), %CPPSELF.minute(), %CPPSELF.second(), %CPPSELF.msec()); %PYARG_0 = PyTime_FromTime(%CPPSELF.hour(), %CPPSELF.minute(), %CPPSELF.second(), %CPPSELF.msec()*1000);
</inject-code> </inject-code>
</add-function> </add-function>
</value-type> </value-type>

View file

@ -18,17 +18,17 @@ class TestDateTimeConversions (unittest.TestCase):
self.assertEqual(date, other.toPython()) self.assertEqual(date, other.toPython())
def testQTime(self): def testQTime(self):
time = datetime.time(11, 14, 00, 01) time = datetime.time(11, 14, 00, 1000)
other = QTime(time) other = QTime(time)
self.assertEqual(time.hour, other.hour()) self.assertEqual(time.hour, other.hour())
self.assertEqual(time.minute, other.minute()) self.assertEqual(time.minute, other.minute())
self.assertEqual(time.second, other.second()) self.assertEqual(time.second, other.second())
self.assertEqual(time.microsecond, other.msec()) self.assertEqual(time.microsecond/1000, other.msec())
self.assertEqual(time, other.toPython()) self.assertEqual(time, other.toPython())
def testQDateTime(self): def testQDateTime(self):
dateTime = datetime.datetime(2010, 04, 23, 11, 14, 00, 01) dateTime = datetime.datetime(2010, 04, 23, 11, 14, 00, 1000)
other = QDateTime(dateTime) other = QDateTime(dateTime)
otherDate = other.date() otherDate = other.date()
@ -40,7 +40,7 @@ class TestDateTimeConversions (unittest.TestCase):
self.assertEqual(dateTime.hour, otherTime.hour()) self.assertEqual(dateTime.hour, otherTime.hour())
self.assertEqual(dateTime.minute, otherTime.minute()) self.assertEqual(dateTime.minute, otherTime.minute())
self.assertEqual(dateTime.second, otherTime.second()) self.assertEqual(dateTime.second, otherTime.second())
self.assertEqual(dateTime.microsecond, otherTime.msec()) self.assertEqual(dateTime.microsecond/1000, otherTime.msec())
self.assertEqual(dateTime, other.toPython()) self.assertEqual(dateTime, other.toPython())

View file

@ -6,13 +6,18 @@ from PySide.QtCore import QDateTime, QDate, QTime
class TestQDate (unittest.TestCase): class TestQDate (unittest.TestCase):
def testDateConversion(self): def testDateConversion(self):
dateTime = QDateTime(QDate(2011, 05, 17), QTime(11, 01, 14, 15)) dateTime = QDateTime(QDate(2011, 05, 17), QTime(11, 01, 14, 15))
dateTimePy = QDateTime(datetime.date(2011, 05, 17), datetime.time(11, 01, 14, 15)) dateTimePy = QDateTime(datetime.date(2011, 05, 17), datetime.time(11, 01, 14, 15000))
self.assertEqual(dateTime, dateTimePy) self.assertEqual(dateTime, dateTimePy)
def testDateTimeConversion(self): def testDateTimeConversion(self):
dateTime = QDateTime(QDate(2011, 05, 17), QTime(11, 01, 14, 15)) dateTime = QDateTime(QDate(2011, 05, 17), QTime(11, 01, 14, 15))
dateTimePy = QDateTime(datetime.datetime(2011, 05, 17, 11, 01, 14, 15)) dateTimePy = QDateTime(datetime.datetime(2011, 05, 17, 11, 01, 14, 15000))
self.assertEqual(dateTime, dateTimePy) self.assertEqual(dateTime, dateTimePy)
def testDateTimeNow(self):
py = datetime.datetime.now()
qt = QDateTime(py)
self.assertEqual(qt, py)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()