Lines 352-625
void XMLShapeExport::ImpExportText( cons
Link Here
|
352 |
#define FOUND_EVENTTYPE 0x0080 |
352 |
#define FOUND_EVENTTYPE 0x0080 |
353 |
#define FOUND_MACRO 0x0100 |
353 |
#define FOUND_MACRO 0x0100 |
354 |
#define FOUND_LIBRARY 0x0200 |
354 |
#define FOUND_LIBRARY 0x0200 |
|
|
355 |
#define FOUND_ACTION 0x0400 |
355 |
|
356 |
|
356 |
void XMLShapeExport::ImpExportEvents( const uno::Reference< drawing::XShape >& xShape ) |
357 |
void XMLShapeExport::ImpExportEvents( const beans::PropertyValue* pProperties, const sal_Int32 nCount ) |
357 |
{ |
358 |
{ |
358 |
do |
359 |
sal_Int32 nFound = 0; |
|
|
360 |
OUString aStrEventType; |
361 |
presentation::ClickAction eClickAction; |
362 |
presentation::AnimationEffect eEffect; |
363 |
presentation::AnimationSpeed eSpeed; |
364 |
OUString aStrSoundURL; |
365 |
sal_Bool bPlayFull; |
366 |
sal_Int32 nVerb; |
367 |
OUString aStrMacro; |
368 |
OUString aStrLibrary; |
369 |
OUString aStrBookmark; |
370 |
OUString aHyperURL; |
371 |
sal_Int32 nIndex; |
372 |
for( nIndex = 0; nIndex < nCount; nIndex++, pProperties++ ) |
359 |
{ |
373 |
{ |
360 |
uno::Reference< document::XEventsSupplier > xEventsSupplier( xShape, uno::UNO_QUERY ); |
374 |
if( ( ( nFound & FOUND_EVENTTYPE ) == 0 ) && pProperties->Name == msEventType ) |
361 |
if( !xEventsSupplier.is() ) |
375 |
{ |
362 |
break; |
376 |
if( pProperties->Value >>= aStrEventType ) |
|
|
377 |
nFound |= FOUND_EVENTTYPE; |
378 |
} |
379 |
else if( ( ( nFound & FOUND_CLICKACTION ) == 0 ) && pProperties->Name == msClickAction ) |
380 |
{ |
381 |
if( pProperties->Value >>= eClickAction ) |
382 |
nFound |= FOUND_CLICKACTION; |
383 |
} |
384 |
else if( ( ( nFound & FOUND_MACRO ) == 0 ) && ( pProperties->Name == msMacroName || pProperties->Name == msScript ) ) |
385 |
{ |
386 |
if( pProperties->Value >>= aStrMacro ) |
387 |
nFound |= FOUND_MACRO; |
388 |
} |
389 |
else if( ( ( nFound & FOUND_ACTION ) == 0 ) && ( pProperties->Name == msURL ) ) |
390 |
{ |
391 |
if( pProperties->Value >>= aHyperURL ) |
392 |
nFound |= FOUND_ACTION; |
393 |
} |
394 |
else if( ( ( nFound & FOUND_LIBRARY ) == 0 ) && pProperties->Name == msLibrary ) |
395 |
{ |
396 |
if( pProperties->Value >>= aStrLibrary ) |
397 |
nFound |= FOUND_LIBRARY; |
398 |
} |
399 |
else if( ( ( nFound & FOUND_EFFECT ) == 0 ) && pProperties->Name == msEffect ) |
400 |
{ |
401 |
if( pProperties->Value >>= eEffect ) |
402 |
nFound |= FOUND_EFFECT; |
403 |
} |
404 |
else if( ( ( nFound & FOUND_BOOKMARK ) == 0 ) && pProperties->Name == msBookmark ) |
405 |
{ |
406 |
if( pProperties->Value >>= aStrBookmark ) |
407 |
nFound |= FOUND_BOOKMARK; |
408 |
} |
409 |
else if( ( ( nFound & FOUND_SPEED ) == 0 ) && pProperties->Name == msSpeed ) |
410 |
{ |
411 |
if( pProperties->Value >>= eSpeed ) |
412 |
nFound |= FOUND_SPEED; |
413 |
} |
414 |
else if( ( ( nFound & FOUND_SOUNDURL ) == 0 ) && pProperties->Name == msSoundURL ) |
415 |
{ |
416 |
if( pProperties->Value >>= aStrSoundURL ) |
417 |
nFound |= FOUND_SOUNDURL; |
418 |
} |
419 |
else if( ( ( nFound & FOUND_PLAYFULL ) == 0 ) && pProperties->Name == msPlayFull ) |
420 |
{ |
421 |
if( pProperties->Value >>= bPlayFull ) |
422 |
nFound |= FOUND_PLAYFULL; |
423 |
} |
424 |
else if( ( ( nFound & FOUND_VERB ) == 0 ) && pProperties->Name == msVerb ) |
425 |
{ |
426 |
if( pProperties->Value >>= nVerb ) |
427 |
nFound |= FOUND_VERB; |
428 |
} |
429 |
} |
363 |
|
430 |
|
364 |
uno::Reference< container::XNameReplace > xEvents( xEventsSupplier->getEvents() ); |
431 |
if( ( nFound & FOUND_EVENTTYPE ) == 0 ) |
365 |
DBG_ASSERT( xEvents.is(), "XEventsSupplier::getEvents() returned NULL" ); |
432 |
return; |
366 |
if( !xEvents.is() ) |
|
|
367 |
break; |
368 |
|
433 |
|
369 |
uno::Sequence< beans::PropertyValue > aProperties; |
434 |
if( aStrEventType == msPresentation ) |
370 |
if( !xEvents->hasByName( msOnClick ) ) |
435 |
{ |
371 |
break; |
436 |
if( ( nFound & FOUND_CLICKACTION ) == 0 ) |
|
|
437 |
return; |
372 |
|
438 |
|
373 |
if( !(xEvents->getByName( msOnClick ) >>= aProperties) ) |
439 |
if( eClickAction == presentation::ClickAction_NONE ) |
374 |
break; |
440 |
return; |
375 |
|
441 |
|
376 |
sal_Int32 nFound = 0; |
442 |
SvXMLElementExport aEventsElemt(rExport, XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, sal_True, sal_True); |
377 |
const beans::PropertyValue* pProperties = aProperties.getConstArray(); |
|
|
378 |
|
443 |
|
379 |
OUString aStrEventType; |
444 |
enum XMLTokenEnum eStrAction; |
380 |
presentation::ClickAction eClickAction; |
|
|
381 |
presentation::AnimationEffect eEffect; |
382 |
presentation::AnimationSpeed eSpeed; |
383 |
OUString aStrSoundURL; |
384 |
sal_Bool bPlayFull; |
385 |
sal_Int32 nVerb; |
386 |
OUString aStrMacro; |
387 |
OUString aStrLibrary; |
388 |
OUString aStrBookmark; |
389 |
|
445 |
|
390 |
const sal_Int32 nCount = aProperties.getLength(); |
446 |
switch( eClickAction ) |
391 |
sal_Int32 nIndex; |
|
|
392 |
for( nIndex = 0; nIndex < nCount; nIndex++, pProperties++ ) |
393 |
{ |
447 |
{ |
394 |
if( ( ( nFound & FOUND_EVENTTYPE ) == 0 ) && pProperties->Name == msEventType ) |
448 |
case presentation::ClickAction_PREVPAGE: eStrAction = XML_PREVIOUS_PAGE; break; |
395 |
{ |
449 |
case presentation::ClickAction_NEXTPAGE: eStrAction = XML_NEXT_PAGE; break; |
396 |
if( pProperties->Value >>= aStrEventType ) |
450 |
case presentation::ClickAction_FIRSTPAGE: eStrAction = XML_FIRST_PAGE; break; |
397 |
nFound |= FOUND_EVENTTYPE; |
451 |
case presentation::ClickAction_LASTPAGE: eStrAction = XML_LAST_PAGE; break; |
398 |
} |
452 |
case presentation::ClickAction_INVISIBLE: eStrAction = XML_HIDE; break; |
399 |
else if( ( ( nFound & FOUND_CLICKACTION ) == 0 ) && pProperties->Name == msClickAction ) |
453 |
case presentation::ClickAction_STOPPRESENTATION:eStrAction = XML_STOP; break; |
400 |
{ |
454 |
case presentation::ClickAction_PROGRAM: eStrAction = XML_EXECUTE; break; |
401 |
if( pProperties->Value >>= eClickAction ) |
455 |
case presentation::ClickAction_BOOKMARK: eStrAction = XML_SHOW; break; |
402 |
nFound |= FOUND_CLICKACTION; |
456 |
case presentation::ClickAction_DOCUMENT: eStrAction = XML_SHOW; break; |
403 |
} |
457 |
case presentation::ClickAction_MACRO: eStrAction = XML_EXECUTE_MACRO; break; |
404 |
else if( ( ( nFound & FOUND_MACRO ) == 0 ) && ( pProperties->Name == msMacroName || pProperties->Name == msScript ) ) |
458 |
case presentation::ClickAction_VERB: eStrAction = XML_VERB; break; |
405 |
{ |
459 |
case presentation::ClickAction_VANISH: eStrAction = XML_FADE_OUT; break; |
406 |
if( pProperties->Value >>= aStrMacro ) |
460 |
case presentation::ClickAction_SOUND: eStrAction = XML_SOUND; break; |
407 |
nFound |= FOUND_MACRO; |
461 |
default: |
408 |
} |
462 |
DBG_ERROR( "unknown presentation::ClickAction found!" ); |
409 |
else if( ( ( nFound & FOUND_LIBRARY ) == 0 ) && pProperties->Name == msLibrary ) |
463 |
eStrAction = XML_UNKNOWN; |
410 |
{ |
|
|
411 |
if( pProperties->Value >>= aStrLibrary ) |
412 |
nFound |= FOUND_LIBRARY; |
413 |
} |
414 |
else if( ( ( nFound & FOUND_EFFECT ) == 0 ) && pProperties->Name == msEffect ) |
415 |
{ |
416 |
if( pProperties->Value >>= eEffect ) |
417 |
nFound |= FOUND_EFFECT; |
418 |
} |
419 |
else if( ( ( nFound & FOUND_BOOKMARK ) == 0 ) && pProperties->Name == msBookmark ) |
420 |
{ |
421 |
if( pProperties->Value >>= aStrBookmark ) |
422 |
nFound |= FOUND_BOOKMARK; |
423 |
} |
424 |
else if( ( ( nFound & FOUND_SPEED ) == 0 ) && pProperties->Name == msSpeed ) |
425 |
{ |
426 |
if( pProperties->Value >>= eSpeed ) |
427 |
nFound |= FOUND_SPEED; |
428 |
} |
429 |
else if( ( ( nFound & FOUND_SOUNDURL ) == 0 ) && pProperties->Name == msSoundURL ) |
430 |
{ |
431 |
if( pProperties->Value >>= aStrSoundURL ) |
432 |
nFound |= FOUND_SOUNDURL; |
433 |
} |
434 |
else if( ( ( nFound & FOUND_PLAYFULL ) == 0 ) && pProperties->Name == msPlayFull ) |
435 |
{ |
436 |
if( pProperties->Value >>= bPlayFull ) |
437 |
nFound |= FOUND_PLAYFULL; |
438 |
} |
439 |
else if( ( ( nFound & FOUND_VERB ) == 0 ) && pProperties->Name == msVerb ) |
440 |
{ |
441 |
if( pProperties->Value >>= nVerb ) |
442 |
nFound |= FOUND_VERB; |
443 |
} |
444 |
} |
464 |
} |
445 |
|
465 |
|
446 |
if( ( nFound & FOUND_EVENTTYPE ) == 0 ) |
466 |
OUString aEventQName( |
447 |
break; |
467 |
rExport.GetNamespaceMap().GetQNameByKey( |
|
|
468 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "click" ) ) ) ); |
469 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
470 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_ACTION, eStrAction ); |
448 |
|
471 |
|
449 |
if( aStrEventType == msPresentation ) |
472 |
if( eClickAction == presentation::ClickAction_VANISH ) |
450 |
{ |
473 |
{ |
451 |
if( ( nFound & FOUND_CLICKACTION ) == 0 ) |
474 |
if( nFound & FOUND_EFFECT ) |
452 |
break; |
475 |
{ |
|
|
476 |
XMLEffect eKind; |
477 |
XMLEffectDirection eDirection; |
478 |
sal_Int16 nStartScale; |
479 |
sal_Bool bIn; |
453 |
|
480 |
|
454 |
if( eClickAction == presentation::ClickAction_NONE ) |
481 |
SdXMLImplSetEffect( eEffect, eKind, eDirection, nStartScale, bIn ); |
455 |
break; |
|
|
456 |
|
482 |
|
457 |
SvXMLElementExport aEventsElemt(rExport, XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, sal_True, sal_True); |
483 |
if( eEffect != EK_none ) |
|
|
484 |
{ |
485 |
SvXMLUnitConverter::convertEnum( msBuffer, eKind, aXML_AnimationEffect_EnumMap ); |
486 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_EFFECT, msBuffer.makeStringAndClear() ); |
487 |
} |
458 |
|
488 |
|
459 |
enum XMLTokenEnum eStrAction; |
489 |
if( eDirection != ED_none ) |
|
|
490 |
{ |
491 |
SvXMLUnitConverter::convertEnum( msBuffer, eDirection, aXML_AnimationDirection_EnumMap ); |
492 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_DIRECTION, msBuffer.makeStringAndClear() ); |
493 |
} |
460 |
|
494 |
|
461 |
switch( eClickAction ) |
495 |
if( nStartScale != -1 ) |
462 |
{ |
496 |
{ |
463 |
case presentation::ClickAction_PREVPAGE: eStrAction = XML_PREVIOUS_PAGE; break; |
497 |
SvXMLUnitConverter::convertPercent( msBuffer, nStartScale ); |
464 |
case presentation::ClickAction_NEXTPAGE: eStrAction = XML_NEXT_PAGE; break; |
498 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_START_SCALE, msBuffer.makeStringAndClear() ); |
465 |
case presentation::ClickAction_FIRSTPAGE: eStrAction = XML_FIRST_PAGE; break; |
499 |
} |
466 |
case presentation::ClickAction_LASTPAGE: eStrAction = XML_LAST_PAGE; break; |
|
|
467 |
case presentation::ClickAction_INVISIBLE: eStrAction = XML_HIDE; break; |
468 |
case presentation::ClickAction_STOPPRESENTATION:eStrAction = XML_STOP; break; |
469 |
case presentation::ClickAction_PROGRAM: eStrAction = XML_EXECUTE; break; |
470 |
case presentation::ClickAction_BOOKMARK: eStrAction = XML_SHOW; break; |
471 |
case presentation::ClickAction_DOCUMENT: eStrAction = XML_SHOW; break; |
472 |
case presentation::ClickAction_MACRO: eStrAction = XML_EXECUTE_MACRO; break; |
473 |
case presentation::ClickAction_VERB: eStrAction = XML_VERB; break; |
474 |
case presentation::ClickAction_VANISH: eStrAction = XML_FADE_OUT; break; |
475 |
case presentation::ClickAction_SOUND: eStrAction = XML_SOUND; break; |
476 |
default: |
477 |
DBG_ERROR( "unknown presentation::ClickAction found!" ); |
478 |
eStrAction = XML_UNKNOWN; |
479 |
} |
500 |
} |
480 |
|
501 |
|
481 |
OUString aEventQName( |
502 |
if( nFound & FOUND_SPEED && eEffect != presentation::AnimationEffect_NONE ) |
482 |
rExport.GetNamespaceMap().GetQNameByKey( |
|
|
483 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "click" ) ) ) ); |
484 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
485 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_ACTION, eStrAction ); |
486 |
|
487 |
if( eClickAction == presentation::ClickAction_VANISH ) |
488 |
{ |
503 |
{ |
489 |
if( nFound & FOUND_EFFECT ) |
504 |
if( eSpeed != presentation::AnimationSpeed_MEDIUM ) |
490 |
{ |
505 |
{ |
491 |
XMLEffect eKind; |
506 |
SvXMLUnitConverter::convertEnum( msBuffer, eSpeed, aXML_AnimationSpeed_EnumMap ); |
492 |
XMLEffectDirection eDirection; |
507 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_SPEED, msBuffer.makeStringAndClear() ); |
493 |
sal_Int16 nStartScale; |
508 |
} |
494 |
sal_Bool bIn; |
509 |
} |
495 |
|
510 |
} |
496 |
SdXMLImplSetEffect( eEffect, eKind, eDirection, nStartScale, bIn ); |
|
|
497 |
|
511 |
|
498 |
if( eEffect != EK_none ) |
512 |
if( eClickAction == presentation::ClickAction_PROGRAM || |
499 |
{ |
513 |
eClickAction == presentation::ClickAction_BOOKMARK || |
500 |
SvXMLUnitConverter::convertEnum( msBuffer, eKind, aXML_AnimationEffect_EnumMap ); |
514 |
eClickAction == presentation::ClickAction_DOCUMENT ) |
501 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_EFFECT, msBuffer.makeStringAndClear() ); |
515 |
{ |
502 |
} |
516 |
if( eClickAction == presentation::ClickAction_BOOKMARK ) |
|
|
517 |
msBuffer.append( sal_Unicode('#') ); |
503 |
|
518 |
|
504 |
if( eDirection != ED_none ) |
519 |
msBuffer.append( aStrBookmark ); |
505 |
{ |
520 |
rExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(msBuffer.makeStringAndClear()) ); |
506 |
SvXMLUnitConverter::convertEnum( msBuffer, eDirection, aXML_AnimationDirection_EnumMap ); |
521 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); |
507 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_DIRECTION, msBuffer.makeStringAndClear() ); |
522 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_NEW ); |
508 |
} |
523 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONREQUEST ); |
|
|
524 |
} |
509 |
|
525 |
|
510 |
if( nStartScale != -1 ) |
526 |
if( ( nFound & FOUND_VERB ) && eClickAction == presentation::ClickAction_VERB ) |
511 |
{ |
527 |
{ |
512 |
SvXMLUnitConverter::convertPercent( msBuffer, nStartScale ); |
528 |
msBuffer.append( nVerb ); |
513 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_START_SCALE, msBuffer.makeStringAndClear() ); |
529 |
rExport.AddAttribute(XML_NAMESPACE_PRESENTATION, XML_VERB, msBuffer.makeStringAndClear()); |
514 |
} |
530 |
} |
515 |
} |
|
|
516 |
|
531 |
|
517 |
if( nFound & FOUND_SPEED && eEffect != presentation::AnimationEffect_NONE ) |
532 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_PRESENTATION, XML_EVENT_LISTENER, sal_True, sal_True); |
518 |
{ |
|
|
519 |
if( eSpeed != presentation::AnimationSpeed_MEDIUM ) |
520 |
{ |
521 |
SvXMLUnitConverter::convertEnum( msBuffer, eSpeed, aXML_AnimationSpeed_EnumMap ); |
522 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_SPEED, msBuffer.makeStringAndClear() ); |
523 |
} |
524 |
} |
525 |
} |
526 |
|
533 |
|
527 |
if( eClickAction == presentation::ClickAction_PROGRAM || |
534 |
if( eClickAction == presentation::ClickAction_VANISH || eClickAction == presentation::ClickAction_SOUND ) |
528 |
eClickAction == presentation::ClickAction_BOOKMARK || |
535 |
{ |
529 |
eClickAction == presentation::ClickAction_DOCUMENT ) |
536 |
if( ( nFound & FOUND_SOUNDURL ) && aStrSoundURL.getLength() != 0 ) |
530 |
{ |
537 |
{ |
531 |
if( eClickAction == presentation::ClickAction_BOOKMARK ) |
538 |
rExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStrSoundURL) ); |
532 |
msBuffer.append( sal_Unicode('#') ); |
|
|
533 |
|
534 |
msBuffer.append( aStrBookmark ); |
535 |
rExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(msBuffer.makeStringAndClear()) ); |
536 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); |
539 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); |
537 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_NEW ); |
540 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_NEW ); |
538 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONREQUEST ); |
541 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONREQUEST ); |
539 |
} |
542 |
if( nFound & FOUND_PLAYFULL && bPlayFull ) |
|
|
543 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_PLAY_FULL, XML_TRUE ); |
540 |
|
544 |
|
541 |
if( ( nFound & FOUND_VERB ) && eClickAction == presentation::ClickAction_VERB ) |
545 |
SvXMLElementExport aElem( rExport, XML_NAMESPACE_PRESENTATION, XML_SOUND, sal_True, sal_True ); |
542 |
{ |
|
|
543 |
msBuffer.append( nVerb ); |
544 |
rExport.AddAttribute(XML_NAMESPACE_PRESENTATION, XML_VERB, msBuffer.makeStringAndClear()); |
545 |
} |
546 |
} |
|
|
547 |
} |
548 |
} |
549 |
else if( aStrEventType == msStarBasic ) |
550 |
{ |
551 |
if( nFound & FOUND_MACRO ) |
552 |
{ |
553 |
SvXMLElementExport aEventsElemt(rExport, XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, sal_True, sal_True); |
546 |
|
554 |
|
547 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_PRESENTATION, XML_EVENT_LISTENER, sal_True, sal_True); |
555 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_LANGUAGE, |
|
|
556 |
rExport.GetNamespaceMap().GetQNameByKey( |
557 |
XML_NAMESPACE_OOO, |
558 |
OUString( RTL_CONSTASCII_USTRINGPARAM( |
559 |
"starbasic" ) ) ) ); |
560 |
OUString aEventQName( |
561 |
rExport.GetNamespaceMap().GetQNameByKey( |
562 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "click" ) ) ) ); |
563 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
548 |
|
564 |
|
549 |
if( eClickAction == presentation::ClickAction_VANISH || eClickAction == presentation::ClickAction_SOUND ) |
565 |
if( nFound & FOUND_LIBRARY ) |
550 |
{ |
566 |
{ |
551 |
if( ( nFound & FOUND_SOUNDURL ) && aStrSoundURL.getLength() != 0 ) |
567 |
const OUString& rApp = GetXMLToken( XML_APPLICATION ); |
552 |
{ |
568 |
const OUString& rDoc = GetXMLToken( XML_DOCUMENT ); |
553 |
rExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStrSoundURL) ); |
569 |
OUString sLocation( GetXMLToken( |
554 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); |
570 |
(aStrLibrary.equalsIgnoreAsciiCaseAscii("StarOffice") || |
555 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_NEW ); |
571 |
aStrLibrary.equalsIgnoreAsciiCaseAscii("application") ) ? XML_APPLICATION |
556 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONREQUEST ); |
572 |
: XML_DOCUMENT ) ); |
557 |
if( nFound & FOUND_PLAYFULL && bPlayFull ) |
573 |
OUStringBuffer sTmp( sLocation.getLength() + aStrMacro.getLength() + 1 ); |
558 |
rExport.AddAttribute( XML_NAMESPACE_PRESENTATION, XML_PLAY_FULL, XML_TRUE ); |
574 |
sTmp = sLocation; |
559 |
|
575 |
sTmp.append( sal_Unicode( ':' ) ); |
560 |
SvXMLElementExport aElem( rExport, XML_NAMESPACE_PRESENTATION, XML_SOUND, sal_True, sal_True ); |
576 |
sTmp.append( aStrMacro ); |
561 |
} |
577 |
rExport.AddAttribute(XML_NAMESPACE_SCRIPT, XML_MACRO_NAME, |
|
|
578 |
sTmp.makeStringAndClear()); |
562 |
} |
579 |
} |
563 |
break; |
580 |
else |
|
|
581 |
{ |
582 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_MACRO_NAME, aStrMacro ); |
583 |
} |
584 |
|
585 |
|
586 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_SCRIPT, XML_EVENT_LISTENER, sal_True, sal_True); |
564 |
} |
587 |
} |
565 |
else if( aStrEventType == msStarBasic ) |
588 |
} |
|
|
589 |
else if( aStrEventType == msScript || aStrEventType == msAction ) |
590 |
{ |
591 |
if( nFound & ( FOUND_MACRO | FOUND_ACTION ) ) |
566 |
{ |
592 |
{ |
567 |
if( nFound & FOUND_MACRO ) |
593 |
SvXMLElementExport aEventsElemt(rExport, XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, sal_True, sal_True); |
|
|
594 |
if ( nFound & FOUND_MACRO ) |
568 |
{ |
595 |
{ |
569 |
SvXMLElementExport aEventsElemt(rExport, XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, sal_True, sal_True); |
596 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_LANGUAGE, rExport.GetNamespaceMap().GetQNameByKey( |
570 |
|
597 |
XML_NAMESPACE_OOO, GetXMLToken(XML_SCRIPT) ) ); |
571 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_LANGUAGE, |
|
|
572 |
rExport.GetNamespaceMap().GetQNameByKey( |
573 |
XML_NAMESPACE_OOO, |
574 |
OUString( RTL_CONSTASCII_USTRINGPARAM( |
575 |
"starbasic" ) ) ) ); |
576 |
OUString aEventQName( |
598 |
OUString aEventQName( |
577 |
rExport.GetNamespaceMap().GetQNameByKey( |
599 |
rExport.GetNamespaceMap().GetQNameByKey( |
578 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "click" ) ) ) ); |
600 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "click" ) ) ) ); |
579 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
601 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
580 |
|
602 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, aStrMacro ); |
581 |
if( nFound & FOUND_LIBRARY ) |
|
|
582 |
{ |
583 |
const OUString& rApp = GetXMLToken( XML_APPLICATION ); |
584 |
const OUString& rDoc = GetXMLToken( XML_DOCUMENT ); |
585 |
OUString sLocation( GetXMLToken( |
586 |
(aStrLibrary.equalsIgnoreAsciiCaseAscii("StarOffice") || |
587 |
aStrLibrary.equalsIgnoreAsciiCaseAscii("application") ) ? XML_APPLICATION |
588 |
: XML_DOCUMENT ) ); |
589 |
OUStringBuffer sTmp( sLocation.getLength() + aStrMacro.getLength() + 1 ); |
590 |
sTmp = sLocation; |
591 |
sTmp.append( sal_Unicode( ':' ) ); |
592 |
sTmp.append( aStrMacro ); |
593 |
rExport.AddAttribute(XML_NAMESPACE_SCRIPT, XML_MACRO_NAME, |
594 |
sTmp.makeStringAndClear()); |
595 |
} |
596 |
else |
597 |
{ |
598 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_MACRO_NAME, aStrMacro ); |
599 |
} |
600 |
|
601 |
|
603 |
|
602 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_SCRIPT, XML_EVENT_LISTENER, sal_True, sal_True); |
604 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_SCRIPT, XML_EVENT_LISTENER, sal_True, sal_True); |
603 |
} |
605 |
} |
604 |
} |
606 |
if ( nFound & FOUND_ACTION ) |
605 |
else if( aStrEventType == msScript ) |
|
|
606 |
{ |
607 |
if( nFound & FOUND_MACRO ) |
608 |
{ |
607 |
{ |
609 |
SvXMLElementExport aEventsElemt(rExport, XML_NAMESPACE_OFFICE, XML_EVENT_LISTENERS, sal_True, sal_True); |
|
|
610 |
|
611 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_LANGUAGE, rExport.GetNamespaceMap().GetQNameByKey( |
608 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_LANGUAGE, rExport.GetNamespaceMap().GetQNameByKey( |
612 |
XML_NAMESPACE_OOO, GetXMLToken(XML_SCRIPT) ) ); |
609 |
XML_NAMESPACE_OOO, GetXMLToken(XML_SCRIPT) ) ); |
613 |
OUString aEventQName( |
610 |
OUString aEventQName( |
614 |
rExport.GetNamespaceMap().GetQNameByKey( |
611 |
rExport.GetNamespaceMap().GetQNameByKey( |
615 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "click" ) ) ) ); |
612 |
XML_NAMESPACE_DOM, OUString( RTL_CONSTASCII_USTRINGPARAM( "action" ) ) ) ); |
616 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
613 |
rExport.AddAttribute( XML_NAMESPACE_SCRIPT, XML_EVENT_NAME, aEventQName ); |
617 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, aStrMacro ); |
614 |
rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, aHyperURL ); |
618 |
|
615 |
|
619 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_SCRIPT, XML_EVENT_LISTENER, sal_True, sal_True); |
616 |
SvXMLElementExport aEventElemt(rExport, XML_NAMESPACE_DRAW, XML_EVENT_LISTENER, sal_True, sal_True); |
620 |
} |
617 |
} |
621 |
} |
618 |
} |
622 |
} |
619 |
} |
|
|
620 |
} |
621 |
|
622 |
void XMLShapeExport::ImpExportEvents( const uno::Reference< drawing::XShape >& xShape ) |
623 |
{ |
624 |
do |
625 |
{ |
626 |
uno::Reference< document::XEventsSupplier > xEventsSupplier( xShape, uno::UNO_QUERY ); |
627 |
if( !xEventsSupplier.is() ) |
628 |
break; |
629 |
|
630 |
uno::Reference< container::XNameReplace > xEvents( xEventsSupplier->getEvents() ); |
631 |
DBG_ASSERT( xEvents.is(), "XEventsSupplier::getEvents() returned NULL" ); |
632 |
if( !xEvents.is() ) |
633 |
break; |
634 |
|
635 |
static uno::Sequence< OUString > aEvents = xEvents->getElementNames(); |
636 |
const OUString* pEvt = aEvents.getConstArray(); |
637 |
const OUString* pEnd = aEvents.getConstArray() + aEvents.getLength(); |
638 |
|
639 |
for ( ; pEvt != pEnd; ++pEvt ) |
640 |
{ |
641 |
uno::Sequence< beans::PropertyValue > aProperties; |
642 |
if( !xEvents->hasByName( *pEvt ) ) |
643 |
break; |
644 |
|
645 |
if( !(xEvents->getByName( *pEvt ) >>= aProperties) ) |
646 |
break; |
647 |
const beans::PropertyValue* pProperties = aProperties.getConstArray(); |
648 |
const sal_Int32 nCount = aProperties.getLength(); |
649 |
ImpExportEvents( pProperties, nCount ); |
650 |
} |
651 |
|
652 |
} |
623 |
while(0); |
653 |
while(0); |
624 |
} |
654 |
} |
625 |
|
655 |
|