diff options
Diffstat (limited to 'sd')
-rw-r--r-- | sd/inc/app.hrc | 2 | ||||
-rw-r--r-- | sd/sdi/_drvwsh.sdi | 5 | ||||
-rw-r--r-- | sd/sdi/outlnvsh.sdi | 5 | ||||
-rw-r--r-- | sd/sdi/sdraw.sdi | 25 | ||||
-rw-r--r-- | sd/source/filter/grf/sdgrffilter.cxx | 13 | ||||
-rw-r--r-- | sd/source/filter/pptin.cxx | 20 | ||||
-rw-r--r-- | sd/source/ui/app/sdmod2.cxx | 44 | ||||
-rw-r--r-- | sd/source/ui/app/strings.src | 4 | ||||
-rw-r--r-- | sd/source/ui/inc/ViewShell.hxx | 4 | ||||
-rw-r--r-- | sd/source/ui/inc/strings.hrc | 1 | ||||
-rw-r--r-- | sd/source/ui/unoidl/unoobj.cxx | 20 | ||||
-rw-r--r-- | sd/source/ui/view/PrintManager.cxx | 3 | ||||
-rw-r--r-- | sd/source/ui/view/drviews7.cxx | 1 | ||||
-rw-r--r-- | sd/source/ui/view/drviewsb.cxx | 8 | ||||
-rw-r--r-- | sd/source/ui/view/outlnvs2.cxx | 8 | ||||
-rw-r--r-- | sd/source/ui/view/viewshel.cxx | 1 | ||||
-rw-r--r-- | sd/uiconfig/sdraw/menubar/menubar.xml | 3 | ||||
-rw-r--r-- | sd/uiconfig/simpress/menubar/menubar.xml | 3 |
18 files changed, 154 insertions, 16 deletions
diff --git a/sd/inc/app.hrc b/sd/inc/app.hrc index defab564e5ff..15d7144e752a 100644 --- a/sd/inc/app.hrc +++ b/sd/inc/app.hrc @@ -394,6 +394,8 @@ #define SID_PREVIEW_QUALITY_BLACKWHITE (SID_SD_START+371) #define SID_VECTORIZE (SID_SD_START+372) +#define SID_INSERT_FLD_PAGES (SID_SD_START+373) + #define SID_CONVERT_TO_BITMAP (SID_SD_START+378) #define SID_CONVERT_TO_METAFILE (SID_SD_START+379) diff --git a/sd/sdi/_drvwsh.sdi b/sd/sdi/_drvwsh.sdi index f8d76d3d6006..8f758dda5858 100644 --- a/sd/sdi/_drvwsh.sdi +++ b/sd/sdi/_drvwsh.sdi @@ -2116,6 +2116,11 @@ interface DrawView ExecMethod = FuTemporary ; StateMethod = GetMenuState ; ] + SID_INSERT_FLD_PAGES // ole : no, status : play rec + [ + ExecMethod = FuTemporary ; + StateMethod = GetMenuState ; + ] SID_INSERT_FLD_FILE // ole : no, status : play rec [ ExecMethod = FuTemporary ; diff --git a/sd/sdi/outlnvsh.sdi b/sd/sdi/outlnvsh.sdi index 6d30615dbd79..3b0c49af6901 100644 --- a/sd/sdi/outlnvsh.sdi +++ b/sd/sdi/outlnvsh.sdi @@ -391,6 +391,11 @@ interface OutlineView ExecMethod = FuTemporaryModify ; StateMethod = GetMenuState ; ] + SID_INSERT_FLD_PAGES // ole : no, status : play rec + [ + ExecMethod = FuTemporaryModify ; + StateMethod = GetMenuState ; + ] SID_INSERT_FLD_FILE // ole : no, status : play rec [ ExecMethod = FuTemporaryModify ; diff --git a/sd/sdi/sdraw.sdi b/sd/sdi/sdraw.sdi index 3ad34d263fe4..515b5b6b84ce 100644 --- a/sd/sdi/sdraw.sdi +++ b/sd/sdi/sdraw.sdi @@ -3586,6 +3586,31 @@ SfxVoidItem InsertPageField SID_INSERT_FLD_PAGE ] //-------------------------------------------------------------------------- +SfxVoidItem InsertPagesField SID_INSERT_FLD_PAGES +() +[ + /* flags: */ + AutoUpdate = FALSE, + Cachable = Cachable, + FastCall = FALSE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_INSERT; +] + +//-------------------------------------------------------------------------- SfxVoidItem InsertPageQuick SID_INSERTPAGE_QUICK () [ diff --git a/sd/source/filter/grf/sdgrffilter.cxx b/sd/source/filter/grf/sdgrffilter.cxx index 747f9efb5b34..bb3c114f603f 100644 --- a/sd/source/filter/grf/sdgrffilter.cxx +++ b/sd/source/filter/grf/sdgrffilter.cxx @@ -398,16 +398,21 @@ void SdGRFFilter::SaveGraphic( const ::com::sun::star::uno::Reference< ::com::su // detect mime type of graphic OUString aMimeType; + OUString sGraphicURL; // first try to detect from graphic object Reference< XPropertySet > xGraphicSet( xShapeSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Graphic" ) ) ), UNO_QUERY_THROW ); - xGraphicSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "MimeType" ) ) ) >>= aMimeType; + xShapeSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "GraphicURL" ) ) ) >>= sGraphicURL; - if( aMimeType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "image/x-vclgraphic" ) ) || !aMimeType.getLength() ) + bool bIsLinked = (sGraphicURL.getLength() != 0) && (sGraphicURL.compareToAscii( RTL_CONSTASCII_STRINGPARAM("vnd.sun.star.GraphicObject:") ) != 0); + + if( !bIsLinked ) + xGraphicSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "MimeType" ) ) ) >>= aMimeType; + + if( bIsLinked || aMimeType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "image/x-vclgraphic" ) ) || !aMimeType.getLength() ) { // this failed, try to detect it from graphic stream and URL - OUString aURL; - xShapeSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "GraphicURL" ) ) ) >>= aURL; + OUString aURL( sGraphicURL ); if( aURL.getLength() == 0 ) xShapeSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "GraphicStreamURL" ) ) ) >>= aURL; diff --git a/sd/source/filter/pptin.cxx b/sd/source/filter/pptin.cxx index 84da311f1763..dae9e427aa35 100644 --- a/sd/source/filter/pptin.cxx +++ b/sd/source/filter/pptin.cxx @@ -40,6 +40,7 @@ #ifndef _SVXIDS_HRC #include <svx/svxids.hrc> #endif +#include <svtools/urihelper.hxx> #include <svx/svdfppt.hxx> #include <svx/svditer.hxx> #include <sfx2/docfile.hxx> @@ -2160,17 +2161,28 @@ void ImplSdPPTImport::FillSdAnimationInfo( SdAnimationInfo* pInfo, PptInteractiv switch( pIAtom->nHyperlinkType ) { case 9: - case 10: - break; case 8: // hyperlink : URL { if ( pPtr->aTarget.Len() ) { - pInfo->maBookmark = String( pPtr->aTarget ); - pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_DOCUMENT; + ::sd::DrawDocShell* pDocShell = mpDoc->GetDocSh(); + if ( pDocShell ) + { + String aBaseURL = pDocShell->GetMedium()->GetBaseURL(); + INetURLObject aURL( pPtr->aTarget ); + if( INET_PROT_NOT_VALID == aURL.GetProtocol() ) + utl::LocalFileHelper::ConvertSystemPathToURL( pPtr->aTarget, aBaseURL, pInfo->maBookmark ); + if( !pInfo->maBookmark.Len() ) + pInfo->maBookmark = URIHelper::SmartRel2Abs( INetURLObject(aBaseURL), pPtr->aTarget, URIHelper::GetMaybeFileHdl(), true ); + pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_PROGRAM; + } } } break; + + case 10: + break; + case 7: // hyperlink auf eine Seite { if ( pPtr->aConvSubString.Len() ) diff --git a/sd/source/ui/app/sdmod2.cxx b/sd/source/ui/app/sdmod2.cxx index 1b8438e808ed..bbf80e942602 100644 --- a/sd/source/ui/app/sdmod2.cxx +++ b/sd/source/ui/app/sdmod2.cxx @@ -273,6 +273,50 @@ IMPL_LINK(SdModule, CalcFieldValueHdl, EditFieldInfo*, pInfo) pInfo->SetRepresentation( aRepresentation ); } + else if( dynamic_cast< const SvxPagesField* >(pField) ) + { + String aRepresentation; + aRepresentation += sal_Unicode( ' ' ); + + ::sd::ViewShell* pViewSh = pDocShell ? pDocShell->GetViewShell() : NULL; + if(pViewSh == NULL) + { + ::sd::ViewShellBase* pBase = PTR_CAST(::sd::ViewShellBase, SfxViewShell::Current()); + if(pBase) + pViewSh = pBase->GetMainViewShell().get(); + } + if( !pDoc && pViewSh ) + pDoc = pViewSh->GetDoc(); + + bool bMasterView; + SdPage* pPage = GetCurrentPage( pViewSh, pInfo, bMasterView ); + + USHORT nPageCount = 0; + + if( !bMasterView ) + { + if( pPage && (pPage->GetPageKind() == PK_HANDOUT) && pViewSh ) + { + nPageCount = pViewSh->GetPrintedHandoutPageCount(); + } + else if( pDoc ) + { + nPageCount = (USHORT)pDoc->GetSdPageCount(PK_STANDARD); + } + } + + if( nPageCount > 0 ) + { + aRepresentation = pDoc->CreatePageNumValue(nPageCount); + } + else + { + static String aNumberText( SdResId( STR_FIELD_PLACEHOLDER_COUNT ) ); + aRepresentation = aNumberText; + } + + pInfo->SetRepresentation( aRepresentation ); + } else if( (pURLField = dynamic_cast< const SvxURLField* >(pField)) != 0 ) { switch ( pURLField->GetFormat() ) diff --git a/sd/source/ui/app/strings.src b/sd/source/ui/app/strings.src index 9b85e933bedc..7bea646e3122 100644 --- a/sd/source/ui/app/strings.src +++ b/sd/source/ui/app/strings.src @@ -1166,6 +1166,10 @@ String STR_FIELD_PLACEHOLDER_NUMBER { Text [ en-US ] = "<number>" ; }; +String STR_FIELD_PLACEHOLDER_COUNT +{ + Text [ en-US ]="<count>" ; +}; String STR_PLACEHOLDER_DESCRIPTION_NOTES { diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx index 6ccea228c3a7..395566f0cded 100644 --- a/sd/source/ui/inc/ViewShell.hxx +++ b/sd/source/ui/inc/ViewShell.hxx @@ -301,6 +301,9 @@ public: USHORT GetPrintedHandoutPageNum (void) const { return mnPrintedHandoutPageNum; } void SetPrintedHandoutPageNum (USHORT nPageNumber) {mnPrintedHandoutPageNum=nPageNumber; } + USHORT GetPrintedHandoutPageCount(void) const { return mnPrintedHandoutPageCount; } + void SetPrintedHandoutPageCount (USHORT nPageCount) {mnPrintedHandoutPageCount=nPageCount; } + virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE ); void GetMenuState(SfxItemSet& rSet); @@ -496,6 +499,7 @@ protected: BOOL mbStartShowWithDialog; // Praesentation wurde ueber Dialog gestartet USHORT mnPrintedHandoutPageNum; // Page number of the handout page that is to be printed. + USHORT mnPrintedHandoutPageCount; // Page count of the handout pages that are to be printed. //af BOOL bPrintDirectSelected; // Print only selected objects in direct print //afString sPageRange; // pagerange if selected objects in direct print diff --git a/sd/source/ui/inc/strings.hrc b/sd/source/ui/inc/strings.hrc index db2683bf5c6c..5deb5e900a93 100644 --- a/sd/source/ui/inc/strings.hrc +++ b/sd/source/ui/inc/strings.hrc @@ -488,6 +488,7 @@ #define STR_FIELD_PLACEHOLDER_NUMBER (RID_APP_START+695) #define STR_UNDO_HANGULHANJACONVERSION (RID_APP_START+696) +#define STR_FIELD_PLACEHOLDER_COUNT (RID_APP_START+697) #define STR_LEFT_PANE_DRAW_TITLE (RID_APP_START+700) #define STR_LEFT_PANE_IMPRESS_TITLE (RID_APP_START+701) diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx index 5b4ac09726bc..149350df17b0 100644 --- a/sd/source/ui/unoidl/unoobj.cxx +++ b/sd/source/ui/unoidl/unoobj.cxx @@ -909,12 +909,22 @@ sal_Bool SdXShape::IsPresObj() const throw() sal_Bool SdXShape::IsEmptyPresObj() const throw() { SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj == NULL || !pObj->IsEmptyPresObj() ) - return sal_False; + if( (pObj != NULL) && pObj->IsEmptyPresObj() ) + { + // check if the object is in edit, than its temporarely not empty + SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( pObj ); + if( pTextObj == 0 ) + return sal_True; + + OutlinerParaObject* pParaObj = pTextObj->GetEditOutlinerParaObject(); + if( pParaObj ) + { + delete pParaObj; + return sal_True; + } + } - // check if the object is in edit, than its temporarely not empty - SdrTextObj* pTextObj = PTR_CAST( SdrTextObj, pObj ); - return (NULL == pTextObj) || ( NULL == pTextObj->GetEditOutlinerParaObject() ); + return sal_False; } /** sets/reset the empty status of a presentation object diff --git a/sd/source/ui/view/PrintManager.cxx b/sd/source/ui/view/PrintManager.cxx index 774eaf2accaa..5b4fbf8eb30f 100644 --- a/sd/source/ui/view/PrintManager.cxx +++ b/sd/source/ui/view/PrintManager.cxx @@ -1128,6 +1128,8 @@ void PrintManager::PrintHandout( PrintInfo& rInfo, USHORT nPage ) if( aPageObjVector.empty() ) return; + rInfo.mrViewShell.SetPrintedHandoutPageCount( (USHORT)((aPagesVector.size() + aPageObjVector.size() - 1) / aPageObjVector.size()) ); + /* sal_Int32 nHandoutPageCount = aPagesVector.size() / aPageObjVector.size(); sal_Int32 nHandoutPage = 0; @@ -1212,6 +1214,7 @@ void PrintManager::PrintHandout( PrintInfo& rInfo, USHORT nPage ) } rInfo.mrViewShell.SetPrintedHandoutPageNum(1); + rInfo.mrViewShell.SetPrintedHandoutPageCount(0); delete pPrintView; rInfo.mrPrinter.SetMapMode(aOldMap); } diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx index b3f1c78c7e2c..bbdb31adf460 100644 --- a/sd/source/ui/view/drviews7.cxx +++ b/sd/source/ui/view/drviews7.cxx @@ -1026,6 +1026,7 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet ) rSet.DisableItem( SID_INSERT_FLD_TIME_VAR ); rSet.DisableItem( SID_INSERT_FLD_AUTHOR ); rSet.DisableItem( SID_INSERT_FLD_PAGE ); + rSet.DisableItem( SID_INSERT_FLD_PAGES ); rSet.DisableItem( SID_INSERT_FLD_FILE ); rSet.DisableItem( SID_INSERT_GRAPHIC ); diff --git a/sd/source/ui/view/drviewsb.cxx b/sd/source/ui/view/drviewsb.cxx index 8efa756ed09c..9a94cae21983 100644 --- a/sd/source/ui/view/drviewsb.cxx +++ b/sd/source/ui/view/drviewsb.cxx @@ -502,6 +502,7 @@ void DrawViewShell::FuTemp02(SfxRequest& rReq) case SID_INSERT_FLD_TIME_VAR: case SID_INSERT_FLD_AUTHOR: case SID_INSERT_FLD_PAGE: + case SID_INSERT_FLD_PAGES: case SID_INSERT_FLD_FILE: { USHORT nMul = 1; @@ -543,6 +544,13 @@ void DrawViewShell::FuTemp02(SfxRequest& rReq) } break; + case SID_INSERT_FLD_PAGES: + { + pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD ); + nMul = 3; + } + break; + case SID_INSERT_FLD_FILE: { String aName; diff --git a/sd/source/ui/view/outlnvs2.cxx b/sd/source/ui/view/outlnvs2.cxx index 9a47f15ff512..99fbcb7f2eda 100644 --- a/sd/source/ui/view/outlnvs2.cxx +++ b/sd/source/ui/view/outlnvs2.cxx @@ -485,6 +485,7 @@ void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq) case SID_INSERT_FLD_TIME_VAR: case SID_INSERT_FLD_AUTHOR: case SID_INSERT_FLD_PAGE: + case SID_INSERT_FLD_PAGES: case SID_INSERT_FLD_FILE: { SvxFieldItem* pFieldItem = 0; @@ -523,6 +524,10 @@ void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq) pFieldItem = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD ); break; + case SID_INSERT_FLD_PAGES: + pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD ); + break; + case SID_INSERT_FLD_FILE: { String aName; @@ -543,7 +548,8 @@ void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq) pOldFldItem->GetField()->ISA( SvxExtTimeField ) || pOldFldItem->GetField()->ISA( SvxExtFileField ) || pOldFldItem->GetField()->ISA( SvxAuthorField ) || - pOldFldItem->GetField()->ISA( SvxPageField ) ) ) + pOldFldItem->GetField()->ISA( SvxPageField ) || + pOldFldItem->GetField()->ISA( SvxPagesField )) ) { // Feld selektieren, so dass es beim Insert geloescht wird ESelection aSel = pOutlinerView->GetSelection(); diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx index 6de0865217b3..c179385f1c2e 100644 --- a/sd/source/ui/view/viewshel.cxx +++ b/sd/source/ui/view/viewshel.cxx @@ -215,6 +215,7 @@ void ViewShell::construct(void) mpZoomList = 0; mbStartShowWithDialog = FALSE; mnPrintedHandoutPageNum = 1; + mnPrintedHandoutPageCount = 0; mpWindowUpdater.reset( new ::sd::WindowUpdater() ); mpImpl.reset(new Implementation(*this)); meShellType = ST_NONE; diff --git a/sd/uiconfig/sdraw/menubar/menubar.xml b/sd/uiconfig/sdraw/menubar/menubar.xml index 74161968dffa..e34baec0f29c 100644 --- a/sd/uiconfig/sdraw/menubar/menubar.xml +++ b/sd/uiconfig/sdraw/menubar/menubar.xml @@ -126,7 +126,8 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:InsertAuthorField"/> <menu:menuitem menu:id=".uno:InsertPageField"/> - <menu:menuitem menu:id=".uno:InsertFileField"/> + <menu:menuitem menu:id=".uno:InsertPagesField"/> + <menu:menuitem menu:id=".uno:InsertFileField"/> </menu:menupopup> </menu:menu> <menu:menuitem menu:id=".uno:InsertSymbol"/> diff --git a/sd/uiconfig/simpress/menubar/menubar.xml b/sd/uiconfig/simpress/menubar/menubar.xml index f227cc960237..ece53ad4c918 100644 --- a/sd/uiconfig/simpress/menubar/menubar.xml +++ b/sd/uiconfig/simpress/menubar/menubar.xml @@ -143,7 +143,8 @@ <menu:menuseparator/> <menu:menuitem menu:id=".uno:InsertAuthorField"/> <menu:menuitem menu:id=".uno:InsertPageField"/> - <menu:menuitem menu:id=".uno:InsertFileField"/> + <menu:menuitem menu:id=".uno:InsertPagesField"/> + <menu:menuitem menu:id=".uno:InsertFileField"/> </menu:menupopup> </menu:menu> <menu:menuitem menu:id=".uno:InsertSymbol"/> |