tdf#59323 tdf#142221: fix pptx datetime import export format

fixed some problems from the original implementation of
pptx datetime field formatting
(2b0669eec0d86e973a7d8def8744c522bbf8af8b)

also the comments on tests seemed to be based on en-IN which
seems to differ a lot for SvxDateFormat::StdBig. So converted
them to en-US's StdBig.

expanded the tests, so it covers previously poorly imported
types. Also made them use the SvxDateFormat and SvxTimeFormat

Change-Id: I675c482d3095b5373975abb2e6e7eca2d353243d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118135
Tested-by: Jenkins
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
diff --git a/oox/source/drawingml/textfield.cxx b/oox/source/drawingml/textfield.cxx
index e590c5c..0d33da7 100644
--- a/oox/source/drawingml/textfield.cxx
+++ b/oox/source/drawingml/textfield.cxx
@@ -218,21 +218,22 @@ SvxDateFormat TextField::getLODateFormat(std::u16string_view rDateTimeType)
    switch( nDateTimeNum )
    {
    case 1: // Date dd/mm/yyyy
    case 2: // Date Day, Month dd, yyyy
    case 5: // Date dd-Mon-yy
    case 6: // Date Month yy
    case 7: // Date Mon-yy
    case 8: // DateTime dd/mm/yyyy H:MM PM
    case 9: // DateTime dd/mm/yyyy H:MM:SS PM
        return SvxDateFormat::B;
    case 3: // Date dd Month yyyy
    case 2: // Date Day, Month dd, yyyy
        return SvxDateFormat::StdBig;
    case 4: // Date Month dd, yyyy
        return SvxDateFormat::StdSmall;
    case 10: // Time H:MM
    case 11: // Time H:MM:SS
    case 12: // Time H:MM PM
    case 13: // Time H:MM:SS PM
    case 3: // Date dd Month yyyy
    case 4: // Date Month dd, yyyy - no exact map
    case 6: // Date Month yy - no exact map
        return SvxDateFormat::D;
    case 5: // Date dd-Mon-yy - no exact map
    case 7: // Date Mon-yy - no exact map
        return SvxDateFormat::C;
    case 10: // Time H:MM - not a date format
    case 11: // Time H:MM:SS - not a date format
    case 12: // Time H:MM PM - not a date format
    case 13: // Time H:MM:SS PM - not a date format
    default:
        return SvxDateFormat::AppDefault;
    }
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 7c6754a..e45c5c5 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2355,11 +2355,13 @@ OUString DrawingML::GetDatetimeTypeFromDateTime(SvxDateFormat eDate, SvxTimeForm
        case SvxDateFormat::B:
            aDateField = "datetime1"; // 13/02/1996
            break;
        case SvxDateFormat::StdBig:
        case SvxDateFormat::C:
            aDateField = "datetime5";
            break;
        case SvxDateFormat::D:
            aDateField = "datetime3"; // 13 February 1996
            break;
        case SvxDateFormat::StdBig:
        case SvxDateFormat::E:
        case SvxDateFormat::F:
            aDateField = "datetime2";
diff --git a/sd/qa/unit/data/odp/numfmt.odp b/sd/qa/unit/data/odp/numfmt.odp
index 6fd32ce..51227ea 100644
--- a/sd/qa/unit/data/odp/numfmt.odp
+++ b/sd/qa/unit/data/odp/numfmt.odp
Binary files differ
diff --git a/sd/qa/unit/data/pptx/numfmt.pptx b/sd/qa/unit/data/pptx/numfmt.pptx
index e5f0f5c..f855fbb 100644
--- a/sd/qa/unit/data/pptx/numfmt.pptx
+++ b/sd/qa/unit/data/pptx/numfmt.pptx
Binary files differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index e2cdef3..b7d6e0c 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -12,6 +12,7 @@
#include <comphelper/sequence.hxx>
#include <editeng/eeitem.hxx>
#include <editeng/editobj.hxx>
#include <editeng/flditem.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/numitem.hxx>
#include <editeng/unoprnms.hxx>
@@ -787,26 +788,33 @@ void matchNumberFormat( int nPage, uno::Reference< text::XTextField > const & xF
    xPropSet->getPropertyValue("NumberFormat") >>= nNumFmt;
    switch( nPage )
    {
        case 0:     // 13/02/96
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(2), nNumFmt);
        case 0:     // 13/02/96 (StdSmall)
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(SvxDateFormat::StdSmall), nNumFmt);
                    break;
        case 1:     // 13/02/1996
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(5), nNumFmt);
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(SvxDateFormat::B), nNumFmt);
                    break;
        case 2:     // 13 February 1996
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(3), nNumFmt);
        case 2:     // Tuesday, June 29, 2021 (StdBig)
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(SvxDateFormat::StdBig), nNumFmt);
                    break;
        case 3:     // 13:49:38
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(2), nNumFmt);
        case 3:     // 13:49:38 (Standard)
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(SvxTimeFormat::Standard), nNumFmt);
                    break;
        case 4:     // 13:49
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(3), nNumFmt);
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(SvxTimeFormat::HH24_MM), nNumFmt);
                    break;
        case 5:     // 01:49 PM
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(6), nNumFmt);
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(SvxTimeFormat::HH12_MM), nNumFmt);
                    break;
        case 6:     // 01:49:38 PM
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(7), nNumFmt);
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Time fields don't match", sal_Int32(SvxTimeFormat::HH12_MM_SS), nNumFmt);
                    break;
        case 7:     // June 29, 2021
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(SvxDateFormat::D), nNumFmt);
                    break;
        case 8:     // Jun 29, 2021
                    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number formats of Date fields don't match", sal_Int32(SvxDateFormat::C), nNumFmt);
                    break;
    }
}

@@ -818,7 +826,7 @@ void SdOOXMLExportTest2::testDatetimeFieldNumberFormat()

    xDocShRef = saveAndReload( xDocShRef.get(), PPTX );

    for(sal_uInt16 i = 0; i <= 6; ++i)
    for(sal_uInt16 i = 0; i <= 8; ++i)
    {
        matchNumberFormat( i, getTextFieldFromPage(0, 0, 0, i, xDocShRef) );
    }
@@ -832,7 +840,7 @@ void SdOOXMLExportTest2::testDatetimeFieldNumberFormatPPTX()

    xDocShRef = saveAndReload( xDocShRef.get(), PPTX );

    for(sal_uInt16 i = 0; i <= 6; ++i)
    for(sal_uInt16 i = 0; i <= 8; ++i)
    {
        matchNumberFormat( i, getTextFieldFromPage(0, 0, 0, i, xDocShRef) );
    }