27 #include <com/sun/star/awt/PushButtonType.hpp>
28 #include <com/sun/star/awt/XSpinField.hpp>
29 #include <com/sun/star/awt/XTextComponent.hpp>
30 #include <com/sun/star/presentation/XCustomPresentationSupplier.hpp>
31 #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
32 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
33 #include <com/sun/star/awt/FontDescriptor.hpp>
34 #include <com/sun/star/awt/FontWeight.hpp>
35 #include <com/sun/star/frame/XStorable.hpp>
36 #include <rtl/ustrbuf.hxx>
52 FontDescriptor aFontDescriptor;
53 if ( rOptimizerDialog.
getControlProperty( rControl,
"FontDescriptor" ) >>= aFontDescriptor )
55 aFontDescriptor.Weight = com::sun::star::awt::FontWeight::BOLD;
62 sal_Int32 nPosX, sal_Int32 nPosY, sal_Int32 nWidth, sal_Int32 nHeight )
66 OUString(
"Orientation"),
67 OUString(
"PositionX"),
68 OUString(
"PositionY"),
77 Any( sal_Int16( 0 ) ),
83 Sequence< Any > aValues( pValues, nCount );
86 rControlName, aNames, aValues );
91 static OUString
InsertButton(
OptimizerDialog& rOptimizerDialog,
const OUString& rControlName, Reference< XActionListener >
const & xActionListener,
92 sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex,
bool bEnabled,
PPPOptimizerTokenEnum nResID, css::awt::PushButtonType nPushButtonType )
99 OUString(
"PositionX"),
100 OUString(
"PositionY"),
101 OUString(
"PushButtonType"),
103 OUString(
"TabIndex"),
112 Any( static_cast< sal_Int16 >(nPushButtonType) ),
121 Sequence< Any > aValues( pValues, nCount );
123 rOptimizerDialog.
insertButton( rControlName, xActionListener, aNames, aValues );
129 sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight,
bool bMultiLine,
bool bBold, sal_Int16 nTabIndex )
131 OUString pNames[] = {
134 OUString(
"MultiLine"),
135 OUString(
"PositionX"),
136 OUString(
"PositionY"),
138 OUString(
"TabIndex"),
154 Sequence< Any > aValues( pValues, nCount );
158 SetBold( rOptimizerDialog, rControlName );
164 const Reference< XItemListener >& xItemListener,
const OUString& rLabel,
165 sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex )
167 sal_Int32 nHeight = 8;
168 OUString pNames[] = {
172 OUString(
"PositionX"),
173 OUString(
"PositionY"),
175 OUString(
"TabIndex"),
191 Sequence< Any > aValues( pValues, nCount );
193 Reference< XCheckBox > xCheckBox( rOptimizerDialog.
insertCheckBox( rControlName, aNames, aValues ) );
194 if ( xItemListener.is() )
195 xCheckBox->addItemListener( xItemListener );
201 const Reference< XTextListener >& xTextListener,
const Reference< XSpinListener >& xSpinListener, sal_Int32 nXPos, sal_Int32 nYPos,
202 double fEffectiveMin,
double fEffectiveMax, sal_Int16 nTabIndex )
204 sal_Int32 nWidth = 50;
205 OUString pNames[] = {
206 OUString(
"EffectiveMax"),
207 OUString(
"EffectiveMin"),
210 OUString(
"PositionX"),
211 OUString(
"PositionY"),
215 OUString(
"TabIndex"),
219 Any( fEffectiveMax ),
220 Any( fEffectiveMin ),
222 Any( sal_Int32(12) ),
234 Sequence< Any > aValues( pValues, nCount );
236 Reference< XTextComponent > xTextComponent( rOptimizerDialog.
insertFormattedField( rControlName, aNames, aValues ), UNO_QUERY_THROW );
237 if ( xTextListener.is() )
238 xTextComponent->addTextListener( xTextListener );
239 if ( xSpinListener.is() )
241 Reference< XSpinField > xSpinField( xTextComponent, UNO_QUERY_THROW );
242 xSpinField->addSpinListener( xSpinListener );
249 const Reference< XTextListener >& rTextListener,
const bool bEnabled,
const Sequence< OUString >& rItemList,
250 sal_Int32 nXPos, sal_Int32 nYPos, sal_Int16 nTabIndex )
252 sal_Int32 nHeight = 12;
253 sal_Int32 nWidth = 100;
254 OUString pNames[] = {
255 OUString(
"Dropdown"),
258 OUString(
"LineCount"),
259 OUString(
"PositionX"),
260 OUString(
"PositionY"),
262 OUString(
"StringItemList"),
263 OUString(
"TabIndex"),
281 Sequence< Any > aValues( pValues, nCount );
283 Reference< XTextComponent > xTextComponent( rOptimizerDialog.
insertComboBox( rControlName, aNames, aValues ), UNO_QUERY_THROW );
284 if ( rTextListener.is() )
285 xTextComponent->addTextListener( rTextListener );
291 const OUString& rLabel, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex )
293 sal_Int32 nHeight = 8;
294 OUString pNames[] = {
297 OUString(
"MultiLine"),
298 OUString(
"PositionX"),
299 OUString(
"PositionY"),
301 OUString(
"TabIndex"),
317 Sequence< Any > aValues( pValues, nCount );
319 Reference< XRadioButton > xRadioButton( rOptimizerDialog.
insertRadioButton( rControlName, aNames, aValues ) );
320 if ( rItemListener.is() )
321 xRadioButton->addItemListener( rItemListener );
327 const Reference< XActionListener >& rActionListener,
const bool bEnabled,
const Sequence< OUString >& rItemList,
328 sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex )
330 sal_Int32 nHeight = 12;
331 OUString pNames[] = {
332 OUString(
"Dropdown"),
335 OUString(
"LineCount"),
336 OUString(
"MultiSelection"),
337 OUString(
"PositionX"),
338 OUString(
"PositionY"),
340 OUString(
"StringItemList"),
341 OUString(
"TabIndex"),
360 Sequence< Any > aValues( pValues, nCount );
362 Reference< XListBox > xListBox( rOptimizerDialog.
insertListBox( rControlName, aNames, aValues ) );
364 xListBox->addActionListener( rActionListener );
390 short nSelectedItem = -1;
393 if ( rList.size() > 1 )
395 aItemList.realloc( rList.size() - 1 );
396 for ( std::vector<OptimizerSettings>::size_type
i = 1;
i < rList.size();
i++ )
398 aItemList[
i - 1 ] = rList[
i ].maName;
399 if ( nSelectedItem < 0 )
401 if ( rList[
i ] == rList[ 0 ] )
402 nSelectedItem =
static_cast< short >(
i - 1 );
406 bool bRemoveButtonEnabled =
false;
407 Sequence< short > aSelectedItems;
408 if ( nSelectedItem >= 0 )
410 aSelectedItems.realloc( 1 );
411 aSelectedItems[ 0 ] = nSelectedItem;
412 if ( nSelectedItem > 2 )
413 bRemoveButtonEnabled =
true;
422 std::vector< OUString > aControlList;
441 setControlProperty(
"CheckBox0Pg3",
"State",
Any( static_cast<sal_Int16>(bDeleteUnusedMasterPages) ) );
451 Reference< XCustomPresentationSupplier > aXCPSup(
xModel, UNO_QUERY_THROW );
452 Reference< XNameContainer > aXCont( aXCPSup->getCustomPresentations() );
454 aCustomShowList = aXCont->getElementNames();
456 std::vector< OUString > aControlList;
476 bool lcl_getResolutionText(OUString& rResolutionText,
const OUString& rImageResolution, sal_Int32 nTargetRes)
479 if (rImageResolution.getToken(0,
';', nIdx).toInt32()!=nTargetRes)
481 rResolutionText = rImageResolution.getToken(0,
';', nIdx);
496 OUString aResolutionText;
499 if (lcl_getResolutionText(aResolutionText,
getString(static_cast<PPPOptimizerTokenEnum>(nIR)), nImageResolution))
502 if ( aResolutionText.isEmpty() )
503 aResolutionText = OUString::number( nImageResolution );
505 setControlProperty(
"RadioButton0Pg1",
"State",
Any( static_cast<sal_Int16>( !bJPEGCompression ) ) );
509 setControlProperty(
"FormattedField0Pg1",
"EffectiveValue",
Any( static_cast<double>(nJPEGQuality) ) );
522 std::vector< OUString > aControlList;
545 setControlProperty(
"RadioButton0Pg2",
"State",
Any( static_cast<sal_Int16>( nOLEOptimizationType == 0 ) ) );
547 setControlProperty(
"RadioButton1Pg2",
"State",
Any( static_cast<sal_Int16>( nOLEOptimizationType == 1 ) ) );
553 Reference< XDrawPagesSupplier > xDrawPagesSupplier(
xModel, UNO_QUERY_THROW );
554 Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_SET_THROW );
555 for ( sal_Int32
i = 0;
i < xDrawPages->getCount();
i++ )
557 Reference< XShapes > xShapes( xDrawPages->getByIndex(
i ), UNO_QUERY_THROW );
558 for ( sal_Int32 j = 0; j < xShapes->getCount(); j++ )
560 Reference< XShape > xShape( xShapes->getByIndex( j ), UNO_QUERY_THROW );
561 if ( xShape->getShapeType() ==
"com.sun.star.drawing.OLE2Shape" )
566 std::vector< OUString > aControlList;
580 double fVal( static_cast<double>( rVal ) );
583 OUStringBuffer aVal( OUString::number( fVal ) );
584 sal_Int32 nX( aVal.indexOf(
'.' ) );
587 aVal.setLength( nX + 2 );
588 aVal[nX] = nSeparator;
590 aVal.append(
" MB" );
591 return aVal.makeStringAndClear();
611 if ( rList.size() > 1 )
613 aItemList.realloc( rList.size() - 1 );
614 for ( std::vector<OptimizerSettings>::size_type
w = 1;
w < rList.size();
w++ )
615 aItemList[
w - 1 ] = rList[
w ].
maName;
620 bool bSaveSettingsEnabled =
true;
621 if ( rList.size() > 1 )
623 for ( std::vector<OptimizerSettings>::size_type
w = 1;
w < rList.size();
w++ )
625 if ( rList[
w ] == rList[ 0 ] )
627 bSaveSettingsEnabled =
false;
632 sal_Int16 nInt16 = 0;
637 std::vector< OUString > aSummaryStrings;
640 sal_Int32 nDeletedSlides = 0;
645 Sequence< short > aSelectedItems;
648 if ( aAny >>= aSelectedItems )
650 if ( aSelectedItems.hasElements() )
652 sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
654 if ( aAny >>= aStringItemList )
656 if ( aStringItemList.getLength() > nSelectedItem )
665 Reference< XDrawPagesSupplier > xDrawPagesSupplier(
mxController->getModel(), UNO_QUERY_THROW );
666 Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_SET_THROW );
667 for( sal_Int32
i = 0;
i < xDrawPages->getCount();
i++ )
669 Reference< XDrawPage > xDrawPage( xDrawPages->getByIndex(
i ), UNO_QUERY_THROW );
673 if ( xPropSet->getPropertyValue(
"Visible" ) >>= bVisible )
682 std::vector< PageCollector::MasterPageEntity > aMasterPageList;
684 Reference< XMasterPagesSupplier > xMasterPagesSupplier(
mxController->getModel(), UNO_QUERY_THROW );
685 Reference< XDrawPages > xMasterPages( xMasterPagesSupplier->getMasterPages(), UNO_SET_THROW );
686 nDeletedSlides += std::count_if(aMasterPageList.begin(), aMasterPageList.end(),
689 if ( nDeletedSlides > 1 )
692 OUString aPlaceholder(
"%SLIDES" );
693 sal_Int32
i = aStr.indexOf( aPlaceholder );
695 aStr = aStr.replaceAt( i, aPlaceholder.getLength(), OUString::number( nDeletedSlides ) );
696 aSummaryStrings.push_back( aStr );
700 sal_Int32 nGraphics = 0;
710 OUString aImagePlaceholder(
"%IMAGES" );
711 OUString aQualityPlaceholder(
"%QUALITY" );
712 OUString aResolutionPlaceholder(
"%RESOLUTION" );
713 sal_Int32
i = aStr.indexOf( aImagePlaceholder );
715 aStr = aStr.replaceAt( i, aImagePlaceholder.getLength(), OUString::number( nGraphics ) );
717 sal_Int32 j = aStr.indexOf( aQualityPlaceholder );
719 aStr = aStr.replaceAt( j, aQualityPlaceholder.getLength(), OUString::number( nJPEGQuality ) );
721 sal_Int32 k = aStr.indexOf( aResolutionPlaceholder );
723 aStr = aStr.replaceAt( k, aResolutionPlaceholder.getLength(), OUString::number( nImageResolution ) );
725 aSummaryStrings.push_back( aStr );
730 sal_Int32 nOLEReplacements = 0;
731 Reference< XDrawPagesSupplier > xDrawPagesSupplier(
mxController->getModel(), UNO_QUERY_THROW );
732 Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_SET_THROW );
733 for ( sal_Int32
i = 0;
i < xDrawPages->getCount();
i++ )
735 Reference< XShapes > xShapes( xDrawPages->getByIndex(
i ), UNO_QUERY_THROW );
736 for ( sal_Int32 j = 0; j < xShapes->getCount(); j++ )
738 Reference< XShape > xShape( xShapes->getByIndex( j ), UNO_QUERY_THROW );
739 if ( xShape->getShapeType() ==
"com.sun.star.drawing.OLE2Shape" )
743 if ( nOLEReplacements > 1 )
746 OUString aPlaceholder(
"%OLE" );
747 sal_Int32
i = aStr.indexOf( aPlaceholder );
749 aStr = aStr.replaceAt( i, aPlaceholder.getLength(), OUString::number( nOLEReplacements ) );
750 aSummaryStrings.push_back( aStr );
753 while( aSummaryStrings.size() < 3 )
754 aSummaryStrings.emplace_back( );
759 sal_Int64 nCurrentFileSize = 0;
760 sal_Int64 nEstimatedFileSize = 0;
761 Reference< XStorable > xStorable(
mxController->getModel(), UNO_QUERY );
762 if ( xStorable.is() && xStorable->hasLocation() )
765 if ( nCurrentFileSize )
767 double fE =
static_cast< double >( nCurrentFileSize );
768 if ( nImageResolution )
770 double v = (
static_cast< double >( nImageResolution ) + 75.0 ) / 300.0;
774 if ( bJPEGCompression )
776 double v = 0.75 - ( ( 100.0 -
static_cast< double >( nJPEGQuality ) ) / 400.0 ) ;
779 nEstimatedFileSize =
static_cast< sal_Int64
>( fE );
783 if ( !aStr.isEmpty() )
784 nSeparator = aStr[ 0 ];
793 OUString pNames[] = {
796 OUString(
"PositionX"),
797 OUString(
"PositionY"),
798 OUString(
"ProgressValue"),
799 OUString(
"ProgressValueMax"),
800 OUString(
"ProgressValueMin"),
804 Any( sal_Int32(12) ),
805 Any( OUString(
"STR_SAVE_AS") ),
809 Any( sal_Int32(100) ),
816 Sequence< Any > aValues( pValues, nCount );
819 "Progress", aNames, aValues );
821 Reference< XTextListener > xTextListener;
823 std::vector< OUString > aControlList;
841 aControlList.emplace_back(
"Progress" );
849 OUString aSettingsName;
851 sal_Int32 nSession = 1;
852 std::vector<OptimizerSettings>::size_type
i;
856 OUString aTemp = aDefault + OUString::number( nSession++ );
857 for ( i = 1; i < rList.size(); i++ )
859 if ( rList[ i ].
maName == aTemp )
862 if ( i == rList.size() )
863 aSettingsName = aTemp;
865 while( aSettingsName.isEmpty() );
void EnablePage(sal_Int16 nStep)
css::uno::Any getControlProperty(const OUString &rControlName, const OUString &rPropertyName)
css::uno::Reference< css::awt::XTextListener > mxTextListenerComboBox0Pg1
void UpdateControlStatesPage1()
static OUString ImpValueOfInMB(sal_Int64 rVal, sal_Unicode nSeparator)
void UpdateControlStatesPage4()
std::vector< std::vector< OUString > > maControlPages
static OUString InsertRadioButton(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, const Reference< XItemListener > &rItemListener, const OUString &rLabel, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex)
static OUString InsertCheckBox(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, const Reference< XItemListener > &xItemListener, const OUString &rLabel, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex)
css::uno::Reference< css::awt::XListBox > insertListBox(const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
css::uno::Reference< css::awt::XActionListener > mxActionListenerListBox0Pg0
void ActivatePage(sal_Int16 nStep)
static OUString InsertFixedText(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, const OUString &rLabel, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, bool bMultiLine, bool bBold, sal_Int16 nTabIndex)
static OUString InsertSeparator(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, sal_Int32 nOrientation, sal_Int32 nPosX, sal_Int32 nPosY, sal_Int32 nWidth, sal_Int32 nHeight)
void UpdateControlStatesPage3()
static sal_Int64 GetFileSize(const OUString &rURL)
static void CountGraphics(const css::uno::Reference< css::uno::XComponentContext > &rxMSF, const css::uno::Reference< css::frame::XModel > &rxModel, const GraphicSettings &rGraphicSettings, sal_Int32 &rGraphics)
css::uno::Reference< css::awt::XControl > insertFormattedField(const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
void setControlProperty(const OUString &rControlName, const OUString &rPropertyName, const css::uno::Any &rPropertyValue)
static OUString InsertButton(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, Reference< XActionListener > const &xActionListener, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex, bool bEnabled, PPPOptimizerTokenEnum nResID, css::awt::PushButtonType nPushButtonType)
css::uno::Reference< css::awt::XItemListener > mxItemListener
#define SAL_N_ELEMENTS(arr)
css::uno::Reference< css::awt::XFixedText > insertFixedText(const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
OUString getString(const PPPOptimizerTokenEnum) const
void SetConfigProperty(const PPPOptimizerTokenEnum, const css::uno::Any &aValue)
void DeactivatePage(sal_Int16 nStep)
css::uno::Reference< css::awt::XComboBox > insertComboBox(const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
css::uno::Reference< css::awt::XRadioButton > insertRadioButton(const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
static OUString InsertListBox(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, const Reference< XActionListener > &rActionListener, const bool bEnabled, const Sequence< OUString > &rItemList, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int16 nTabIndex)
css::uno::Reference< css::uno::XComponentContext > mxContext
css::uno::Reference< css::awt::XCheckBox > insertCheckBox(const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
static OUString InsertComboBox(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, const Reference< XTextListener > &rTextListener, const bool bEnabled, const Sequence< OUString > &rItemList, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int16 nTabIndex)
css::uno::Reference< css::awt::XTextListener > mxTextListenerFormattedField0Pg1
void DisablePage(sal_Int16 nStep)
static void CollectMasterPages(const css::uno::Reference< css::frame::XModel > &, std::vector< MasterPageEntity > &)
static OUString InsertFormattedField(OptimizerDialog &rOptimizerDialog, const OUString &rControlName, const Reference< XTextListener > &xTextListener, const Reference< XSpinListener > &xSpinListener, sal_Int32 nXPos, sal_Int32 nYPos, double fEffectiveMin, double fEffectiveMax, sal_Int16 nTabIndex)
const PropertyValue * pValues
css::uno::Reference< css::frame::XController > mxController
css::uno::Reference< css::uno::XInterface > insertControlModel(const OUString &rServiceName, const OUString &rName, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)
void setVisible(const OUString &rName, bool bVisible)
std::vector< OptimizerSettings > & GetOptimizerSettings()
css::uno::Reference< css::awt::XSpinListener > mxSpinListenerFormattedField0Pg1
css::uno::Any GetConfigProperty(const PPPOptimizerTokenEnum) const
void UpdateControlStatesPage0()
css::uno::Reference< css::awt::XActionListener > mxActionListener
Reference< XModel > xModel
static void SetBold(OptimizerDialog &rOptimizerDialog, const OUString &rControl)
void UpdateControlStatesPage2()
css::uno::Reference< css::awt::XButton > insertButton(const OUString &rName, const css::uno::Reference< css::awt::XActionListener > &xActionListener, const css::uno::Sequence< OUString > &rPropertyNames, const css::uno::Sequence< css::uno::Any > &rPropertyValues)