22 #include <com/sun/star/awt/XFixedText.hpp>
23 #include <com/sun/star/awt/XGraphics.hpp>
24 #include <com/sun/star/awt/PosSize.hpp>
25 #include <com/sun/star/uno/XComponentContext.hpp>
28 #include <rtl/ustrbuf.hxx>
32 #include <progressbar.hxx>
34 using namespace ::
cppu;
35 using namespace ::
osl;
70 css::uno::Reference< XControl > xRef_Topic_Top (
m_xTopic_Top , UNO_QUERY );
71 css::uno::Reference< XControl > xRef_Text_Top (
m_xText_Top , UNO_QUERY );
72 css::uno::Reference< XControl > xRef_Topic_Bottom (
m_xTopic_Bottom , UNO_QUERY );
73 css::uno::Reference< XControl > xRef_Text_Bottom (
m_xText_Bottom , UNO_QUERY );
74 css::uno::Reference< XControl > xRef_Button (
m_xButton , UNO_QUERY );
77 xRef_Topic_Top->setModel ( css::uno::Reference< XControlModel > ( rxContext->getServiceManager()->createInstanceWithContext(
FIXEDTEXT_MODELNAME, rxContext ), UNO_QUERY ) );
78 xRef_Text_Top->setModel ( css::uno::Reference< XControlModel > ( rxContext->getServiceManager()->createInstanceWithContext(
FIXEDTEXT_MODELNAME, rxContext ), UNO_QUERY ) );
79 xRef_Topic_Bottom->setModel ( css::uno::Reference< XControlModel > ( rxContext->getServiceManager()->createInstanceWithContext(
FIXEDTEXT_MODELNAME, rxContext ), UNO_QUERY ) );
80 xRef_Text_Bottom->setModel ( css::uno::Reference< XControlModel > ( rxContext->getServiceManager()->createInstanceWithContext(
FIXEDTEXT_MODELNAME, rxContext ), UNO_QUERY ) );
81 xRef_Button->setModel ( css::uno::Reference< XControlModel > ( rxContext->getServiceManager()->createInstanceWithContext(
BUTTON_MODELNAME, rxContext ), UNO_QUERY ) );
123 aReturn = xDel->queryInterface( rType );
157 static OTypeCollection ourTypeCollection(
163 return ourTypeCollection.getTypes();
172 static_cast< XLayoutConstrains* > (
this ) ,
173 static_cast< XButton* > (
this ) ,
174 static_cast< XProgressMonitor* > (
this )
179 if ( !aReturn.hasValue() )
190 const OUString& rTopic,
191 const OUString& rText,
201 DBG_ASSERT ( !(
impl_searchTopic ( rTopic, bbeforeProgress ) !=
nullptr ),
"ProgressMonitor::addText()\nThe text already exist.\n" );
213 aTextItem.
sTopic = rTopic;
214 aTextItem.
sText = rText;
217 if ( bbeforeProgress )
244 if ( pSearchItem ==
nullptr )
248 if ( bbeforeProgress )
252 {
return &
p == pSearchItem; } );
260 {
return &
p == pSearchItem; } );
272 const OUString& rTopic,
273 const OUString& rText,
287 if ( pSearchItem !=
nullptr )
290 pSearchItem->
sText = rText;
351 m_xButton->addActionListener ( rListener );
363 m_xButton->removeActionListener ( rListener );
387 m_xButton->setActionCommand ( rCommand );
401 ClearableMutexGuard aGuard (
m_aMutex );
404 css::uno::Reference< XLayoutConstrains > xTopicLayout_Top (
m_xTopic_Top , UNO_QUERY );
405 css::uno::Reference< XLayoutConstrains > xTopicLayout_Bottom (
m_xTopic_Bottom , UNO_QUERY );
406 css::uno::Reference< XLayoutConstrains > xButtonLayout (
m_xButton , UNO_QUERY );
408 Size aTopicSize_Top = xTopicLayout_Top->getPreferredSize ();
409 Size aTopicSize_Bottom = xTopicLayout_Bottom->getPreferredSize ();
410 Size aButtonSize = xButtonLayout->getPreferredSize ();
412 Size aProgressBarSize( aTempRectangle.Width, aTempRectangle.Height );
418 nWidth += aProgressBarSize.
Width;
421 nHeight += aTopicSize_Top.
Height;
422 nHeight += aProgressBarSize.
Height;
423 nHeight += aTopicSize_Bottom.
Height;
425 nHeight += aButtonSize.
Height;
438 return Size ( nWidth, nHeight );
448 void SAL_CALL
ProgressMonitor::createPeer (
const css::uno::Reference< XToolkit > & rToolkit,
const css::uno::Reference< XWindowPeer > & rParent )
474 return css::uno::Reference< XControlModel > ();
484 css::uno::Reference< XControl > xRef_Topic_Top (
m_xTopic_Top , UNO_QUERY );
485 css::uno::Reference< XControl > xRef_Text_Top (
m_xText_Top , UNO_QUERY );
486 css::uno::Reference< XControl > xRef_Topic_Bottom (
m_xTopic_Bottom , UNO_QUERY );
487 css::uno::Reference< XControl > xRef_Text_Bottom (
m_xText_Bottom , UNO_QUERY );
488 css::uno::Reference< XControl > xRef_Button (
m_xButton , UNO_QUERY );
499 xRef_Topic_Top->dispose ();
500 xRef_Text_Top->dispose ();
501 xRef_Topic_Bottom->dispose ();
502 xRef_Text_Bottom->dispose ();
503 xRef_Button->dispose ();
517 ( nWidth != aBasePosSize.Width ) ||
518 ( nHeight != aBasePosSize.Height)
562 sal_Int32 nWidth_Button;
563 sal_Int32 nHeight_Button;
565 sal_Int32 nX_ProgressBar;
566 sal_Int32 nY_ProgressBar;
567 sal_Int32 nWidth_ProgressBar;
568 sal_Int32 nHeight_ProgressBar;
570 sal_Int32 nX_Text_Top;
571 sal_Int32 nY_Text_Top;
572 sal_Int32 nWidth_Text_Top;
573 sal_Int32 nHeight_Text_Top;
575 sal_Int32 nX_Topic_Top;
576 sal_Int32 nY_Topic_Top;
577 sal_Int32 nWidth_Topic_Top;
578 sal_Int32 nHeight_Topic_Top;
580 sal_Int32 nX_Text_Bottom;
581 sal_Int32 nY_Text_Bottom;
582 sal_Int32 nWidth_Text_Bottom;
583 sal_Int32 nHeight_Text_Bottom;
585 sal_Int32 nX_Topic_Bottom;
586 sal_Int32 nY_Topic_Bottom;
587 sal_Int32 nWidth_Topic_Bottom;
588 sal_Int32 nHeight_Topic_Bottom;
594 css::uno::Reference< XLayoutConstrains > xTopicLayout_Top (
m_xTopic_Top , UNO_QUERY );
595 css::uno::Reference< XLayoutConstrains > xTextLayout_Top (
m_xText_Top , UNO_QUERY );
596 css::uno::Reference< XLayoutConstrains > xTopicLayout_Bottom (
m_xTopic_Bottom , UNO_QUERY );
597 css::uno::Reference< XLayoutConstrains > xTextLayout_Bottom (
m_xText_Bottom , UNO_QUERY );
598 css::uno::Reference< XLayoutConstrains > xButtonLayout (
m_xButton , UNO_QUERY );
600 Size aTopicSize_Top = xTopicLayout_Top->getPreferredSize ();
601 Size aTextSize_Top = xTextLayout_Top->getPreferredSize ();
602 Size aTopicSize_Bottom = xTopicLayout_Bottom->getPreferredSize ();
603 Size aTextSize_Bottom = xTextLayout_Bottom->getPreferredSize ();
604 Size aButtonSize = xButtonLayout->getPreferredSize ();
608 nWidth_Button = aButtonSize.
Width;
609 nHeight_Button = aButtonSize.
Height;
615 nWidth_Topic_Top = std::max( aTopicSize_Top.
Width, aTopicSize_Bottom.
Width );
616 nHeight_Topic_Top = aTopicSize_Top.
Height;
621 nY_Text_Top = nY_Topic_Top;
622 nWidth_Text_Top = std::max ( aTextSize_Top.
Width, aTextSize_Bottom.
Width );
630 nHeight_Text_Top = nHeight_Topic_Top;
635 nX_ProgressBar = nX_Topic_Top;
637 nWidth_ProgressBar = PROGRESSMONITOR_FREEBORDER+nWidth_Topic_Top+nWidth_Text_Top;
638 nHeight_ProgressBar = nHeight_Button;
641 nX_Topic_Bottom = nX_Topic_Top;
643 nWidth_Topic_Bottom = nWidth_Topic_Top;
644 nHeight_Topic_Bottom = aTopicSize_Bottom.
Height;
648 nY_Text_Bottom = nY_Topic_Bottom;
649 nWidth_Text_Bottom = nWidth_Text_Top;
650 nHeight_Text_Bottom = nHeight_Topic_Bottom;
653 nX_Button = nX_ProgressBar+nWidth_ProgressBar-nWidth_Button;
677 css::uno::Reference< XWindow > xRef_Topic_Top (
m_xTopic_Top , UNO_QUERY );
678 css::uno::Reference< XWindow > xRef_Text_Top (
m_xText_Top , UNO_QUERY );
679 css::uno::Reference< XWindow > xRef_Topic_Bottom (
m_xTopic_Bottom , UNO_QUERY );
680 css::uno::Reference< XWindow > xRef_Text_Bottom (
m_xText_Bottom , UNO_QUERY );
681 css::uno::Reference< XWindow > xRef_Button (
m_xButton , UNO_QUERY );
683 xRef_Topic_Top->setPosSize ( nDx+nX_Topic_Top , nDy+nY_Topic_Top , nWidth_Topic_Top , nHeight_Topic_Top , 15 );
684 xRef_Text_Top->setPosSize ( nDx+nX_Text_Top , nDy+nY_Text_Top , nWidth_Text_Top , nHeight_Text_Top , 15 );
685 xRef_Topic_Bottom->setPosSize ( nDx+nX_Topic_Bottom , nDy+nY_Topic_Bottom , nWidth_Topic_Bottom , nHeight_Topic_Bottom , 15 );
686 xRef_Text_Bottom->setPosSize ( nDx+nX_Text_Bottom , nDy+nY_Text_Bottom , nWidth_Text_Bottom , nHeight_Text_Bottom , 15 );
687 xRef_Button->setPosSize ( nDx+nX_Button , nDy+nY_Button , nWidth_Button , nHeight_Button , 15 );
688 m_xProgressBar->setPosSize( nDx+nX_ProgressBar, nDy+nY_ProgressBar, nWidth_ProgressBar, nHeight_ProgressBar, 15 );
691 m_a3DLine.Y = nDy+nY_Topic_Bottom+nHeight_Topic_Bottom+(PROGRESSMONITOR_FREEBORDER/2);
717 OUStringBuffer aCollectString;
723 aCollectString.append(rSearchItem.sTopic +
"\n");
726 m_xTopic_Top->setText ( aCollectString.makeStringAndClear() );
732 OUStringBuffer aCollectString;
738 aCollectString.append(rSearchItem.sText +
"\n");
741 m_xText_Top->setText ( aCollectString.makeStringAndClear() );
749 OUStringBuffer aCollectString;
755 aCollectString.append(rSearchItem.sTopic +
"\n");
765 OUStringBuffer aCollectString;
771 aCollectString.append(rSearchItem.sText +
"\n");
792 ::std::vector< IMPL_TextlistItem >* pTextList;
804 size_t nPosition = 0;
805 size_t nCount = pTextList->size();
807 for ( nPosition = 0; nPosition < nCount; ++nPosition )
809 auto& rSearchItem = pTextList->at( nPosition );
811 if ( rSearchItem.sTopic == rTopic )
826 std::u16string_view rTopic,
827 std::u16string_view rText
829 if ( rTopic.empty() )
return false;
831 if ( rText.empty() )
return false;
840 if ( rTopic.empty() )
return false;
848 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
850 css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any>
const&)
virtual void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &xToolkit, const css::uno::Reference< css::awt::XWindowPeer > &xParent) override
virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type &aType) override
virtual void SAL_CALL acquire() noexcept override
increment refcount XInterface release() A RuntimeException is thrown.
virtual void impl_paint(sal_Int32 nX, sal_Int32 nY, const css::uno::Reference< css::awt::XGraphics > &xGraphics) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &aType) override
give answer, if interface is supported The interfaces are searched by type.
#define PROGRESSMONITOR_DEFAULT_HEIGHT
constexpr OUStringLiteral FIXEDTEXT_MODELNAME
#define PROGRESSMONITOR_LINECOLOR_SHADOW
OUString sText
Left site of textline in dialog.
virtual void SAL_CALL release() noexcept override
decrement refcount XInterface acquire() A RuntimeException is thrown.
#define PROGRESSMONITOR_DEFAULT_WIDTH
css::uno::Reference< css::awt::XFixedText > m_xTopic_Bottom
virtual ~ProgressMonitor() override
mutable::osl::Mutex m_aMutex
const css::uno::Reference< css::awt::XGraphics > & impl_getGraphicsPeer() const
virtual void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &xToolkit, const css::uno::Reference< css::awt::XWindowPeer > &xParent) override
constexpr OUStringLiteral CONTROLNAME_PROGRESSBAR
virtual void SAL_CALL setValue(sal_Int32 nValue) override
constexpr tools::Long Width() const
constexpr OUStringLiteral PROGRESSMONITOR_DEFAULT_TEXT
sal_Int32 impl_getHeight() const
virtual void SAL_CALL setLabel(const OUString &sLabel) override
virtual css::awt::Size SAL_CALL calcAdjustedSize(const css::awt::Size &aNewSize) override
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
get information about supported interfaces XTypeProvider
::std::vector< IMPL_TextlistItem > maTextlist_Top
virtual sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &xModel) override
#define DBG_ASSERT(sCon, aError)
static bool impl_debug_checkParameter(std::u16string_view sTopic, std::u16string_view sText)
virtual void SAL_CALL removeText(const OUString &sTopic, sal_Bool bbeforeProgress) override
virtual css::awt::Size SAL_CALL getPreferredSize() override
virtual void SAL_CALL setForegroundColor(sal_Int32 nColor) override
IMPL_TextlistItem * impl_searchTopic(std::u16string_view sTopic, bool bbeforeProgress)
css::uno::Reference< css::awt::XFixedText > m_xTopic_Top
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
get information about supported interfaces XTypeProvider
virtual void SAL_CALL setActionCommand(const OUString &sCommand) override
virtual void SAL_CALL acquire() noexcept override
increment refcount XInterface release() A RuntimeException is thrown.
sal_Int32 impl_getWidth() const
virtual void SAL_CALL release() noexcept override
decrement refcount XInterface acquire() A RuntimeException is thrown.
virtual void SAL_CALL addControl(const OUString &sName, const css::uno::Reference< css::awt::XControl > &xControl) override
constexpr OUStringLiteral BUTTON_SERVICENAME
virtual void SAL_CALL setPosSize(sal_Int32 nX, sal_Int32 nY, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nFlags) override
virtual void SAL_CALL addText(const OUString &sTopic, const OUString &sText, sal_Bool bbeforeProgress) override
add topic to dialog Add a topic with a text in right textlist (used for FixedText-member).
virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type &aType) override
#define PROGRESSMONITOR_FREEBORDER
virtual css::awt::Rectangle SAL_CALL getPosSize() override
virtual void SAL_CALL dispose() override
css::uno::Reference< css::awt::XFixedText > m_xText_Top
constexpr OUStringLiteral BUTTON_MODELNAME
css::uno::Reference< css::awt::XFixedText > m_xText_Bottom
constexpr OUStringLiteral CONTROLNAME_TEXT
css::awt::Rectangle m_a3DLine
void impl_rebuildFixedText()
css::uno::Reference< css::awt::XButton > m_xButton
constexpr OUStringLiteral CONTROLNAME_BUTTON
oslInterlockedCount m_refCount
constexpr tools::Long Height() const
virtual css::uno::Reference< css::awt::XWindowPeer > SAL_CALL getPeer() override
constexpr OUStringLiteral PROGRESSMONITOR_DEFAULT_TOPIC
virtual void SAL_CALL removeControl(const css::uno::Reference< css::awt::XControl > &xControl) override
virtual void SAL_CALL dispose() override
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * stardiv_UnoControls_ProgressMonitor_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
virtual sal_Int32 SAL_CALL getValue() override
const css::uno::Reference< css::uno::XInterface > & impl_getDelegator() const
virtual css::uno::Reference< css::awt::XControlModel > SAL_CALL getModel() override
virtual void SAL_CALL setPosSize(sal_Int32 nX, sal_Int32 nY, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nFlags) override
ProgressMonitor(const css::uno::Reference< css::uno::XComponentContext > &rxContext)
virtual void SAL_CALL updateText(const OUString &sTopic, const OUString &sText, sal_Bool bbeforeProgress) override
virtual void SAL_CALL setBackgroundColor(sal_Int32 nColor) override
virtual void SAL_CALL setRange(sal_Int32 nMin, sal_Int32 nMax) override
constexpr OUStringLiteral DEFAULT_BUTTONLABEL
virtual void SAL_CALL addActionListener(const css::uno::Reference< css::awt::XActionListener > &xListener) override
virtual css::awt::Size SAL_CALL getMinimumSize() override
#define PROGRESSMONITOR_LINECOLOR_BRIGHT
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
rtl::Reference< ProgressBar > m_xProgressBar
constexpr OUStringLiteral FIXEDTEXT_SERVICENAME
virtual void SAL_CALL removeActionListener(const css::uno::Reference< css::awt::XActionListener > &xListener) override
::std::vector< IMPL_TextlistItem > maTextlist_Bottom