Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/3426
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/26/3426/1
Create Photo Album fix
Fixed some pointer issues in CreateHdl function.
Removed the creation of title slide.
Added an enum to access the image layout option from the code.
Change-Id: Ib91fbbf3b068453c8e66b8df1ce32e24c3828bc0
---
M sd/source/ui/app/strings.src
M sd/source/ui/dlg/PhotoAlbumDialog.cxx
M sd/source/ui/dlg/PhotoAlbumDialog.hxx
M sd/source/ui/inc/strings.hrc
4 files changed, 43 insertions(+), 64 deletions(-)
diff --git a/sd/source/ui/app/strings.src b/sd/source/ui/app/strings.src
index a91003d..928e03e 100644
--- a/sd/source/ui/app/strings.src
+++ b/sd/source/ui/app/strings.src
@@ -1268,19 +1268,14 @@
Text [ en-US ] = "Drag and Drop Slides" ;
};
-String STR_PHOTO_ALBUM_TITLE
-{
- Text [ en-US ] = "Photo Album" ;
-};
-
-String STR_PHOTO_ALBUM_AUTHOR
-{
- Text [ en-US ] = "Author:" ;
-};
-
String STR_PHOTO_ALBUM_EMPTY_WARNING
{
Text [ en-US ] = "Please add images to the album." ;
};
+String STR_PHOTO_ALBUM_TEXTBOX
+{
+ Text [ en-US ] = "Text Box";
+};
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/PhotoAlbumDialog.cxx b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
index 4beabeb..5d6ba1e 100644
--- a/sd/source/ui/dlg/PhotoAlbumDialog.cxx
+++ b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
@@ -101,33 +101,12 @@
Reference< drawing::XDrawPages > xDrawPages( xDPS->getDrawPages(), uno::UNO_QUERY );
Reference< lang::XMultiServiceFactory > xShapeFactory( pDoc->getUnoModel(), uno::UNO_QUERY
);
- // Create the title slide
- const sal_Int32 nSlideCount = pDoc->GetSdPageCount(PK_STANDARD);
-
- if(nSlideCount == 1)
- {
- // we have created an empty presentation (probably)
- Reference< drawing::XDrawPage > xTitleSlide = appendNewSlide(AUTOLAYOUT_TITLE,
xDrawPages);
-
- SdPage* pFirstSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
- SvtUserOptions aUserOptions;
- SdrObject* pTitleObj = pFirstSlide->GetPresObj(PRESOBJ_TITLE, 0);
- SvxShapeText* pTitleText = new SvxShapeText(pTitleObj);
- pTitleText->SetShapeType("com.sun.star.presentation.TitleTextShape");
- pTitleText->setString(SD_RESSTR(STR_PHOTO_ALBUM_TITLE));
-
- SdrObject* pTextObj = pFirstSlide->GetPresObj(PRESOBJ_TEXT, 0);
- SvxShapeText* pTextShape = new SvxShapeText(pTextObj);
- pTextShape->SetShapeType("com.sun.star.presentation.TextShape");
- pTextShape->setString(SD_RESSTR(STR_PHOTO_ALBUM_AUTHOR) + " " +
aUserOptions.GetFullName());
- }
-
Reference< XComponentContext > xContext(::comphelper::getProcessComponentContext());
Reference< graphic::XGraphicProvider>
xProvider(graphic::GraphicProvider::create(xContext));
// get the option
- OUString sOpt = pInsTypeCombo->GetEntry(pInsTypeCombo->GetSelectEntryPos());
- if ( sOpt == "Fit to slide")
+ sal_uInt16 nOpt = pInsTypeCombo->GetSelectEntryPos();
+ if ( nOpt == FIT_TO_SLIDE )
{
OUString sUrl;
@@ -184,11 +163,9 @@
{
appendNewSlide(AUTOLAYOUT_ONLY_TEXT, xDrawPages);
}
- delete pData;
- pData = NULL;
}
}
- else if( sOpt == "1 image with title" )
+ else if( nOpt == TITLE_ONE_IMAGE )
{
OUString sUrl;
@@ -196,7 +173,7 @@
{
OUString* pData = (OUString*) pImagesLst->GetEntryData(i);
sUrl = *pData;
- if ( sUrl != "Text Box" )
+ if ( sUrl != SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) )
{
Reference< drawing::XDrawPage > xSlide = appendNewSlide(AUTOLAYOUT_NONE,
xDrawPages);
@@ -227,11 +204,9 @@
{
appendNewSlide(AUTOLAYOUT_ONLY_TEXT, xDrawPages);
}
- delete pData;
- pData = NULL;
}
}
- else if( sOpt == "2 images" )
+ else if( nOpt == TWO_IMAGES )
{
OUString sUrl1("");
OUString sUrl2("");
@@ -252,13 +227,15 @@
OUString("Height")) >>= aPageSize.Height;
// grab the left one
- pData = (OUString*) pImagesLst->GetEntryData(i);
+ void* pD1 = pImagesLst->GetEntryData(i);
+ pData = (OUString*) pD1;
sUrl1 = pData ? OUString(*pData) : "";
// grab the right one
- pData = (OUString*) pImagesLst->GetEntryData(i+1);
+ void* pD2 = pImagesLst->GetEntryData(i+1);
+ pData = (OUString*) pD2;
sUrl2 = pData ? OUString(*pData) : "";
- if( sUrl1 == "Text Box" ) // create a Text Box
+ if( sUrl1 == SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) ) // create a Text Box
{
SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
pSlide->CreatePresObj(PRESOBJ_TEXT, sal_False, Rectangle(Point(100,100),
Point(aPageSize.Width/2-100, aPageSize.Height-100)), sal_True);
@@ -300,7 +277,7 @@
xSlide->add(xShape);
}
- if( sUrl2 == "Text Box" ) // create a Text Box
+ if( sUrl2 == SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) ) // create a Text Box
{
SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
pSlide->CreatePresObj(PRESOBJ_TEXT, sal_False,
Rectangle(Point(aPageSize.Width/2 + 100,100), Point(aPageSize.Width-100, aPageSize.Height-100)),
sal_True);
@@ -340,11 +317,9 @@
xShape->setPosition(aPicPos);
xSlide->add(xShape);
}
- delete pData;
- pData = NULL;
}
}
- else if( sOpt == "4 images" )
+ else if( nOpt == FOUR_IMAGES )
{
OUString sUrl1("");
OUString sUrl2("");
@@ -366,22 +341,26 @@
OUString("Height")) >>= aPageSize.Height;
// grab the upper left one
- pData = (OUString*) pImagesLst->GetEntryData(i);
+ void* pD1 = pImagesLst->GetEntryData(i);
+ pData = (OUString*) pD1;
sUrl1 = pData ? OUString(*pData) : "";
// grab the upper right one
- pData = (OUString*) pImagesLst->GetEntryData(i+1);
+ void* pD2 = pImagesLst->GetEntryData(i+1);
+ pData = (OUString*) pD2;
sUrl2 = pData ? OUString(*pData) : "";
// grab the lower left one
- pData = (OUString*) pImagesLst->GetEntryData(i+2);
+ void* pD3 = pImagesLst->GetEntryData(i+2);
+ pData = (OUString*) pD3;
sUrl3 = pData ? OUString(*pData) : "";
// grab the lower right one
- pData = (OUString*) pImagesLst->GetEntryData(i+3);
+ void* pD4 = pImagesLst->GetEntryData(i+3);
+ pData = (OUString*) pD4;
sUrl4 = pData ? OUString(*pData) : "";
- if( sUrl1 == "Text Box" ) // create a Text Box
+ if( sUrl1 == SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) ) // create a Text Box
{
SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
pSlide->CreatePresObj(PRESOBJ_TEXT, sal_False, Rectangle(Point(100,100),
Point(aPageSize.Width/2-100, aPageSize.Height/2-100)), sal_True);
@@ -423,7 +402,7 @@
xSlide->add(xShape);
}
- if( sUrl2 == "Text Box" ) // create a Text Box
+ if( sUrl2 == SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) ) // create a Text Box
{
SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
pSlide->CreatePresObj(PRESOBJ_TEXT, sal_False,
Rectangle(Point(aPageSize.Width/2 + 100,100), Point(aPageSize.Width-100, aPageSize.Height/2-100)),
sal_True);
@@ -464,7 +443,7 @@
xSlide->add(xShape);
}
- if( sUrl3 == "Text Box" ) // create a Text Box
+ if( sUrl3 == SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) ) // create a Text Box
{
SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
pSlide->CreatePresObj(PRESOBJ_TEXT, sal_False,
Rectangle(Point(100,aPageSize.Height/2-100), Point(aPageSize.Width/2-100, aPageSize.Height-100)),
sal_True);
@@ -507,7 +486,7 @@
xSlide->add(xShape);
}
- if( sUrl4 == "Text Box" ) // create a Text Box
+ if( sUrl4 == SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX) ) // create a Text Box
{
SdPage* pSlide = pDoc->GetSdPage( pDoc->GetSdPageCount(PK_STANDARD)-1,
PK_STANDARD);
pSlide->CreatePresObj(PRESOBJ_TEXT, sal_False,
Rectangle(Point(aPageSize.Width/2 + 100,aPageSize.Height/2 - 100), Point(aPageSize.Width-100,
aPageSize.Height-100)), sal_True);
@@ -547,8 +526,6 @@
xShape->setPosition(aPicPos);
xSlide->add(xShape);
}
- delete pData;
- pData = NULL;
}
}
else
@@ -652,11 +629,11 @@
sal_Int16 nPos;
sal_Int16 nInsertPos = pImagesLst->GetSelectEntryPos();
if (nInsertPos < 0)
- nPos = pImagesLst->InsertEntry( OUString("Text Box"));
+ nPos = pImagesLst->InsertEntry( OUString(SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX)));
else
- nPos = pImagesLst->InsertEntry( OUString("Text Box"), nInsertPos);
+ nPos = pImagesLst->InsertEntry( OUString(SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX)), nInsertPos);
- OUString sStr("Text Box");
+ OUString sStr(SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX));
pImagesLst->SetEntryData(nPos, (void*)new OUString(sStr));
if(pImagesLst->GetEntryCount() >= 1)
@@ -792,7 +769,7 @@
pDownBtn->Enable();
}
- if (sImgUrl != "Text Box")
+ if (sImgUrl != SD_RESSTR(STR_PHOTO_ALBUM_TEXTBOX))
{
GraphicFilter aCurFilter;
Graphic aGraphic;
diff --git a/sd/source/ui/dlg/PhotoAlbumDialog.hxx b/sd/source/ui/dlg/PhotoAlbumDialog.hxx
index 98eb458..691edd3 100644
--- a/sd/source/ui/dlg/PhotoAlbumDialog.hxx
+++ b/sd/source/ui/dlg/PhotoAlbumDialog.hxx
@@ -95,6 +95,14 @@
Reference< graphic::XGraphic> createXGraphicFromUrl(const OUString& sUrl,
Reference< graphic::XGraphicProvider> xProvider);
+ enum SlideImageLayout
+ {
+ FIT_TO_SLIDE=0,
+ TITLE_ONE_IMAGE,
+ TWO_IMAGES,
+ FOUR_IMAGES
+ };
+
};
} // end of namespace sd
diff --git a/sd/source/ui/inc/strings.hrc b/sd/source/ui/inc/strings.hrc
index 9281678..19816b9 100644
--- a/sd/source/ui/inc/strings.hrc
+++ b/sd/source/ui/inc/strings.hrc
@@ -415,9 +415,8 @@
#define STR_ACC_DIALOG_DESC (RID_APP_START+728)
-#define STR_PHOTO_ALBUM_TITLE (RID_APP_START+729)
-#define STR_PHOTO_ALBUM_AUTHOR (RID_APP_START+730)
-#define STR_PHOTO_ALBUM_EMPTY_WARNING (RID_APP_START+731)
+#define STR_PHOTO_ALBUM_EMPTY_WARNING (RID_APP_START+729)
+#define STR_PHOTO_ALBUM_TEXTBOX (RID_APP_START+730)
/******************************************************************************
* The ids in glob.hrc start at RID_APP_START+750!
--
To view, visit https://gerrit.libreoffice.org/3426
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib91fbbf3b068453c8e66b8df1ce32e24c3828bc0
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Gergő Mocsi <gmocsi91@gmail.com>
Context
- [PATCH] Create Photo Album fix · via Code Review
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.