diff options
Diffstat (limited to 'sd/qa/unit/dialogs-test.cxx')
-rw-r--r-- | sd/qa/unit/dialogs-test.cxx | 122 |
1 files changed, 88 insertions, 34 deletions
diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx index 02dfa202feb2..893fd438badf 100644 --- a/sd/qa/unit/dialogs-test.cxx +++ b/sd/qa/unit/dialogs-test.cxx @@ -54,8 +54,10 @@ #include <com/sun/star/frame/XDesktop2.hpp> #include <comphelper/processfactory.hxx> #include <unotest/macros_test.hxx> +#include <map> using namespace ::com::sun::star; +typedef std::map< OString, sal_uInt32 > mapType; /// Test opening a dialog in sd class SdDialogsTest : public ScreenshotTest @@ -77,6 +79,9 @@ private: std::unique_ptr<SfxItemSet> mpEmptySfxItemSet; std::unique_ptr<SfxItemSet> mpEmptyFillStyleSfxItemSet; + /// the set of known dialogs and their ID for usage in createDialogByID + mapType maKnownDialogs; + /// helpers SdAbstractDialogFactory* getSdAbstractDialogFactory(); SdXImpressDocument* getSdXImpressDocument(); @@ -113,7 +118,8 @@ SdDialogsTest::SdDialogsTest() mpDrawView(nullptr), mpSfxItemSetFromSdrObject(nullptr), mpEmptySfxItemSet(nullptr), - mpEmptyFillStyleSfxItemSet(nullptr) + mpEmptyFillStyleSfxItemSet(nullptr), + maKnownDialogs() { } @@ -131,6 +137,36 @@ void SdDialogsTest::setUp() mpImpressDocument = dynamic_cast<SdXImpressDocument*>(mxComponent.get()); CPPUNIT_ASSERT(mpImpressDocument); + + if (maKnownDialogs.empty()) + { + // fill map of unknown dilogs. Use a set here to allow later + // to 'find' a ID for construction based on the UIXMLDescription + // string (currently not yet used) + maKnownDialogs["modules/simpress/ui/publishingdialog.ui"] = 0; + maKnownDialogs["modules/sdraw/ui/breakdialog.ui"] = 1; + maKnownDialogs["modules/sdraw/ui/copydlg.ui"] = 2; + maKnownDialogs["modules/simpress/ui/customslideshows.ui"] = 3; + maKnownDialogs["modules/sdraw/ui/drawchardialog.ui"] = 4; + maKnownDialogs["modules/sdraw/ui/drawpagedialog.ui"] = 5; + maKnownDialogs["modules/simpress/ui/dlgfield.ui"] = 6; + maKnownDialogs["modules/sdraw/ui/dlgsnap.ui"] = 7; + maKnownDialogs["modules/sdraw/ui/insertlayer.ui"] = 8; + maKnownDialogs["modules/sdraw/ui/insertslidesdialog.ui"] = 9; + maKnownDialogs["modules/sdraw/ui/crossfadedialog.ui"] = 10; + maKnownDialogs["modules/sdraw/ui/bulletsandnumbering.ui"] = 11; + maKnownDialogs["modules/sdraw/ui/drawparadialog.ui"] = 12; + maKnownDialogs["modules/simpress/ui/presentationdialog.ui"] = 13; + maKnownDialogs["modules/simpress/ui/remotedialog.ui"] = 14; + maKnownDialogs["modules/sdraw/ui/drawprtldialog.ui"] = 15; + maKnownDialogs["modules/simpress/ui/slidedesigndialog.ui"] = 16; + maKnownDialogs["modules/sdraw/ui/drawprtldialog.ui"] = 17; + maKnownDialogs["modules/simpress/ui/interactiondialog.ui"] = 18; + maKnownDialogs["modules/sdraw/ui/vectorize.ui"] = 19; + maKnownDialogs["modules/simpress/ui/photoalbum.ui"] = 20; + maKnownDialogs["modules/simpress/ui/masterlayoutdlg.ui"] = 21; + maKnownDialogs["modules/simpress/ui/headerfooterdialog.ui"] = 22; + } } SdAbstractDialogFactory* SdDialogsTest::getSdAbstractDialogFactory() @@ -307,11 +343,6 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) } case 6: { - // CreateAssistentDlg(bool bAutoPilot) has been dropped - break; - } - case 7: - { // CreateSdModifyFieldDlg(vcl::Window* pWindow, const SvxFieldData* pInField, const SfxItemSet& rSet) override; pRetval = getSdAbstractDialogFactory()->CreateSdModifyFieldDlg( Application::GetDefDialogParent(), @@ -319,7 +350,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getEmptySfxItemSet()); break; } - case 8: + case 7: { // CreateSdSnapLineDlg(const SfxItemSet& rInAttrs, ::sd::View* pView) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -333,7 +364,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getDrawView()); break; } - case 9: + case 8: { // CreateSdInsertLayerDlg(const SfxItemSet& rInAttrs, bool bDeletable, const OUString& aStr) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -354,7 +385,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) SD_RESSTR(STR_INSERTLAYER) /* alternative: STR_MODIFYLAYER */); break; } - case 10: + case 9: { // CreateSdInsertPagesObjsDlg(const SdDrawDocument* pDoc, SfxMedium* pSfxMedium, const OUString& rFileName) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -367,7 +398,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) aFileName); break; } - case 11: + case 10: { // CreateMorphDlg(vcl::Window* pParent, const SdrObject* pObj1, const SdrObject* pObj2) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -383,7 +414,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) pSdrObj); break; } - case 12: + case 11: { // CreateSdOutlineBulletTabDlg(const SfxItemSet* pAttr, ::sd::View* pView = nullptr) override; pRetval = getSdAbstractDialogFactory()->CreateSdOutlineBulletTabDlg( @@ -392,7 +423,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getDrawView()); break; } - case 13: + case 12: { // CreateSdParagraphTabDlg(const SfxItemSet* pAttr) override; pRetval = getSdAbstractDialogFactory()->CreateSdParagraphTabDlg( @@ -400,7 +431,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) &getEmptySfxItemSet()); break; } - case 14: + case 13: { // CreateSdStartPresentationDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, const std::vector<OUString> &rPageNames, SdCustomShowList* pCSList) override; const std::vector<OUString> aPageNames; @@ -430,14 +461,14 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) nullptr); break; } - case 15: + case 14: { // CreateRemoteDialog(vcl::Window* pWindow) override; // ad for RemoteDialog pRetval = getSdAbstractDialogFactory()->CreateRemoteDialog( Application::GetDefDialogParent()); break; } - case 16: + case 15: { // CreateSdPresLayoutTemplateDlg(SfxObjectShell* pDocSh, vcl::Window* pParent, const SdResId& DlgId, SfxStyleSheetBase& rStyleBase, PresentationObjects ePO, SfxStyleSheetBasePool* pSSPool) override; // use STR_PSEUDOSHEET_TITLE configuration, see futempl.cxx for more possible configurations @@ -455,7 +486,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) pStyleSheetPool); break; } - case 17: + case 16: { // CreateSdPresLayoutDlg(::sd::DrawDocShell* pDocShell, vcl::Window* pWindow, const SfxItemSet& rInAttrs) override; pRetval = getSdAbstractDialogFactory()->CreateSdPresLayoutDlg( @@ -464,7 +495,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getEmptySfxItemSet()); break; } - case 18: + case 17: { // CreateSdTabTemplateDlg(const SfxObjectShell* pDocShell, SfxStyleSheetBase& rStyleBase, SdrModel* pModel, SdrView* pView) override; // pretty similar to CreateSdPresLayoutTemplateDlg, see above @@ -483,7 +514,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getDrawView()); break; } - case 19: + case 18: { // CreatSdActionDialog(const SfxItemSet* pAttr, ::sd::View* pView) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -511,7 +542,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getDrawView()); break; } - case 20: + case 19: { // CreateSdVectorizeDlg(vcl::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override; // works well with empty Bitmap, but my be nicer with setting one @@ -522,7 +553,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) getDocShell()); break; } - case 21: + case 20: { // CreateSdPhotoAlbumDialog(vcl::Window* pWindow, SdDrawDocument* pDoc) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -532,7 +563,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) pDrawDoc); break; } - case 22: + case 21: { // CreateMasterLayoutDialog(vcl::Window* pParent, SdDrawDocument* pDoc, SdPage*) override; SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc(); @@ -545,7 +576,7 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) pSdPage); break; } - case 23: + case 22: { // CreateHeaderFooterDialog(sd::ViewShell* pViewShell, vcl::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage) override; // This is a hard case, for two reasons: @@ -575,24 +606,47 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID) void SdDialogsTest::openAnyDialog() { - // example for SfxTabDialog: 5 - // example for TabDialog: 23 - // example for self-adapted wizard: 0 - static sal_uInt32 nStartValue(0); - static sal_uInt32 nEndValue(24); - - // loop and dump all Dialogs from SD for now - for (sal_uInt32 a(nStartValue); a < nEndValue; a++) - { - std::unique_ptr<VclAbstractDialog> pDlg( createDialogByID(a) ); + static bool bDumpAllKnownDialogs = true; - if (pDlg) + if (bDumpAllKnownDialogs) + { + // example for SfxTabDialog: 5 -> "modules/sdraw/ui/drawpagedialog.ui" + // example for TabDialog: 22 -> "modules/simpress/ui/headerfooterdialog.ui" + // example for self-adapted wizard: 0 -> "modules/simpress/ui/publishingdialog.ui" + for (mapType::const_iterator i = maKnownDialogs.begin(); i != maKnownDialogs.end(); i++) { - dumpDialogToPath(*pDlg); + std::unique_ptr<VclAbstractDialog> pDlg(createDialogByID((*i).second)); + + if (pDlg) + { + // known dialog, dump screenshot to path + dumpDialogToPath(*pDlg); + } + else + { + // unknown dialog, should not happen in this basic loop. + // You have probably forgotten to add a case and + // implementastion to createDialogByID, please do this + } } } + static bool bCheckFallbackDialog = false; + if (bCheckFallbackDialog) + { + // unknown dialog, try fallback to generic created + // VclBuilder-generated instance. Keep in mind that Dialogs + // using this mechanism will probably not be layouted well + // since the setup/initialization part is missing. Thus, + // only use for fallback when only the UI file is available. + // + // Take any example here, it's only for demonstration - using + // even a known one to demonstrate the fallback possibility + const OString aUIXMLDescription("modules/sdraw/ui/breakdialog.ui"); + + dumpDialogToPath(aUIXMLDescription); + } } CPPUNIT_TEST_SUITE_REGISTRATION(SdDialogsTest); |