summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-12-23 11:16:28 +0000
committerSzymon Kłos <eszkadev@gmail.com>2020-06-03 12:28:38 +0200
commit151911ffced654d49b3af1135111b00db4c680a6 (patch)
tree4c5865bb760fe1194e97680a97f89538b42efb73 /svtools
parentd455add0c642d4426bf1593f9fe5203eca8f8c7c (diff)
reorganize ToolbarUnoDispatcher to be useful for sidebar
Change-Id: If129d4832f04758705e121bff88ea7d2e45bf96b Reviewed-on: https://gerrit.libreoffice.org/85755 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/uno/generictoolboxcontroller.cxx104
1 files changed, 72 insertions, 32 deletions
diff --git a/svtools/source/uno/generictoolboxcontroller.cxx b/svtools/source/uno/generictoolboxcontroller.cxx
index f5a8d470b7b1..545d683f1f0d 100644
--- a/svtools/source/uno/generictoolboxcontroller.cxx
+++ b/svtools/source/uno/generictoolboxcontroller.cxx
@@ -26,6 +26,7 @@
#include <com/sun/star/frame/XDispatch.hpp>
#include <vcl/svapp.hxx>
+#include <vcl/weld.hxx>
using namespace css::awt;
using namespace css::uno;
@@ -49,10 +50,28 @@ GenericToolboxController::GenericToolboxController( const Reference< XComponentC
const Reference< XFrame >& rFrame,
ToolBox* pToolbox,
sal_uInt16 nID,
- const OUString& aCommand ) :
- svt::ToolboxController( rxContext, rFrame, aCommand )
- , m_pToolbox( pToolbox )
- , m_nID( nID )
+ const OUString& aCommand )
+ : svt::ToolboxController( rxContext, rFrame, aCommand )
+ , m_xToolbox( pToolbox )
+ , m_nID( nID )
+ , m_pToolbox(nullptr)
+{
+ // Initialization is done through ctor
+ m_bInitialized = true;
+
+ // insert main command to our listener map
+ if ( !m_aCommandURL.isEmpty() )
+ m_aListenerMap.emplace( aCommand, Reference< XDispatch >() );
+}
+
+GenericToolboxController::GenericToolboxController( const Reference< XComponentContext >& rxContext,
+ const Reference< XFrame >& rFrame,
+ weld::Toolbar& rToolbar,
+ const OUString& aCommand )
+ : svt::ToolboxController( rxContext, rFrame, aCommand )
+ , m_xToolbox( nullptr )
+ , m_nID( 0 )
+ , m_pToolbox(&rToolbar)
{
// Initialization is done through ctor
m_bInitialized = true;
@@ -69,8 +88,9 @@ GenericToolboxController::~GenericToolboxController()
void SAL_CALL GenericToolboxController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
- m_pToolbox.clear();
+ m_xToolbox.clear();
m_nID = 0;
+ m_pToolbox = nullptr;
svt::ToolboxController::dispose();
}
@@ -121,40 +141,60 @@ void GenericToolboxController::statusChanged( const FeatureStateEvent& Event )
if ( m_bDisposed )
return;
- if ( !m_pToolbox )
- return;
+ if (m_xToolbox)
+ {
+ m_xToolbox->EnableItem( m_nID, Event.IsEnabled );
- m_pToolbox->EnableItem( m_nID, Event.IsEnabled );
+ ToolBoxItemBits nItemBits = m_xToolbox->GetItemBits( m_nID );
+ nItemBits &= ~ToolBoxItemBits::CHECKABLE;
+ TriState eTri = TRISTATE_FALSE;
- ToolBoxItemBits nItemBits = m_pToolbox->GetItemBits( m_nID );
- nItemBits &= ~ToolBoxItemBits::CHECKABLE;
- TriState eTri = TRISTATE_FALSE;
+ bool bValue;
+ OUString aStrValue;
+ ItemStatus aItemState;
- bool bValue;
- OUString aStrValue;
- ItemStatus aItemState;
+ if ( Event.State >>= bValue )
+ {
+ // Boolean, treat it as checked/unchecked
+ m_xToolbox->SetItemBits( m_nID, nItemBits );
+ m_xToolbox->CheckItem( m_nID, bValue );
+ if ( bValue )
+ eTri = TRISTATE_TRUE;
+ nItemBits |= ToolBoxItemBits::CHECKABLE;
+ }
+ else if ( Event.State >>= aStrValue )
+ {
+ m_xToolbox->SetItemText( m_nID, aStrValue );
+ }
+ else if ( Event.State >>= aItemState )
+ {
+ eTri = TRISTATE_INDET;
+ nItemBits |= ToolBoxItemBits::CHECKABLE;
+ }
- if ( Event.State >>= bValue )
- {
- // Boolean, treat it as checked/unchecked
- m_pToolbox->SetItemBits( m_nID, nItemBits );
- m_pToolbox->CheckItem( m_nID, bValue );
- if ( bValue )
- eTri = TRISTATE_TRUE;
- nItemBits |= ToolBoxItemBits::CHECKABLE;
+ m_xToolbox->SetItemState( m_nID, eTri );
+ m_xToolbox->SetItemBits( m_nID, nItemBits );
}
- else if ( Event.State >>= aStrValue )
- {
- m_pToolbox->SetItemText( m_nID, aStrValue );
- }
- else if ( Event.State >>= aItemState )
+
+ if (m_pToolbox)
{
- eTri = TRISTATE_INDET;
- nItemBits |= ToolBoxItemBits::CHECKABLE;
- }
+ OString sId = m_aCommandURL.toUtf8();
- m_pToolbox->SetItemState( m_nID, eTri );
- m_pToolbox->SetItemBits( m_nID, nItemBits );
+ m_pToolbox->set_item_sensitive(sId, Event.IsEnabled);
+
+ bool bValue;
+ OUString aStrValue;
+
+ if ( Event.State >>= bValue )
+ {
+ // Boolean, treat it as checked/unchecked
+ m_pToolbox->set_item_active( sId, bValue );
+ }
+ else if ( Event.State >>= aStrValue )
+ {
+ m_pToolbox->set_item_label( sId, aStrValue );
+ }
+ }
}
IMPL_STATIC_LINK( GenericToolboxController, ExecuteHdl_Impl, void*, p, void )