26#include <config_feature_desktop.h>
28#include <svx/strings.hrc>
35#include <com/sun/star/beans/PropertyValue.hpp>
36#include <com/sun/star/beans/XPropertySet.hpp>
37#include <com/sun/star/frame/DispatchDescriptor.hpp>
38#include <com/sun/star/frame/XDispatch.hpp>
39#include <com/sun/star/frame/XDispatchProvider.hpp>
40#include <com/sun/star/frame/XLayoutManager.hpp>
41#include <com/sun/star/frame/XStatusListener.hpp>
42#include <com/sun/star/lang/XInitialization.hpp>
43#include <com/sun/star/lang/XServiceInfo.hpp>
44#include <com/sun/star/text/XTextRange.hpp>
45#include <com/sun/star/ui/XUIElement.hpp>
46#include <com/sun/star/util/URL.hpp>
47#include <com/sun/star/util/URLTransformer.hpp>
48#include <com/sun/star/util/SearchAlgorithms.hpp>
49#include <com/sun/star/util/SearchAlgorithms2.hpp>
69constexpr OUStringLiteral COMMAND_FINDTEXT =
u".uno:FindText";
70constexpr OUStringLiteral COMMAND_DOWNSEARCH =
u".uno:DownSearch";
71constexpr OUStringLiteral COMMAND_UPSEARCH =
u".uno:UpSearch";
72constexpr OUStringLiteral COMMAND_FINDALL =
u".uno:FindAll";
73constexpr OUStringLiteral COMMAND_MATCHCASE =
u".uno:MatchCase";
74constexpr OUStringLiteral COMMAND_SEARCHFORMATTED =
u".uno:SearchFormattedDisplayString";
76const sal_Int32 REMEMBER_SIZE = 10;
81 CheckButtonItemWindow(
vcl::Window* pParent,
const OUString& rLabel)
83 ,
m_xWidget(m_xBuilder->weld_check_button(
"checkbutton"))
87 m_xWidget->connect_key_press(
LINK(
this, CheckButtonItemWindow, KeyInputHdl));
92 bool get_active()
const
103 virtual ~CheckButtonItemWindow()
override
109 std::unique_ptr<weld::CheckButton>
m_xWidget;
116 return ChildKeyInput(rKeyEvent);
119void impl_executeSearch(
const css::uno::Reference< css::uno::XComponentContext >& rxContext,
120 const css::uno::Reference< css::frame::XFrame >& xFrame,
122 const bool aSearchBackwards,
123 const bool aFindAll =
false )
125 css::uno::Reference< css::util::XURLTransformer > xURLTransformer( css::util::URLTransformer::create( rxContext ) );
127 aURL.Complete =
".uno:ExecuteSearch";
128 xURLTransformer->parseStrict(aURL);
131 bool aMatchCase =
false;
132 bool bSearchFormatted =
false;
135 ToolBox::ImplToolItems::size_type nItemCount = pToolBox->
GetItemCount();
136 for ( ToolBox::ImplToolItems::size_type i=0;
i<nItemCount; ++
i )
140 if ( sItemCommand == COMMAND_FINDTEXT )
149 }
else if ( sItemCommand == COMMAND_MATCHCASE )
151 CheckButtonItemWindow* pItemWin =
static_cast<CheckButtonItemWindow*
>(pToolBox->
GetItemWindow(
id));
153 aMatchCase = pItemWin->get_active();
154 }
else if ( sItemCommand == COMMAND_SEARCHFORMATTED )
156 CheckButtonItemWindow* pItemWin =
static_cast<CheckButtonItemWindow*
>(pToolBox->
GetItemWindow(
id));
158 bSearchFormatted = pItemWin->get_active();
166 nFlags |= TransliterationFlags::IGNORE_CASE;
168 nFlags |= TransliterationFlags::IGNORE_DIACRITICS_CTL
169 | TransliterationFlags::IGNORE_KASHIDA_CTL;
172 {
"SearchItem.SearchString", css::uno::Any( sFindText ) },
174 {
"SearchItem.CellType", css::uno::Any( sal_Int16(SvxSearchCellType::VALUE) ) },
175 {
"SearchItem.Backward", css::uno::Any( aSearchBackwards ) },
176 {
"SearchItem.SearchFlags", css::uno::Any( sal_Int32(0) ) },
177 {
"SearchItem.TransliterateFlags", css::uno::Any(
static_cast<sal_Int32
>(nFlags) ) },
178 {
"SearchItem.Command", css::uno::Any(
static_cast<sal_Int16
>(aFindAll ?SvxSearchCmd::FIND_ALL : SvxSearchCmd::FIND ) ) },
179 {
"SearchItem.AlgorithmType", css::uno::Any( sal_Int16(css::util::SearchAlgorithms_ABSOLUTE) ) },
180 {
"SearchItem.AlgorithmType2", css::uno::Any( sal_Int16(css::util::SearchAlgorithms2::ABSOLUTE) ) },
181 {
"SearchItem.SearchFormatted", css::uno::Any( bSearchFormatted ) }
184 css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider(xFrame, css::uno::UNO_QUERY);
185 if ( xDispatchProvider.is() )
187 css::uno::Reference< css::frame::XDispatch >
xDispatch = xDispatchProvider->queryDispatch( aURL, OUString(), 0 );
196 css::uno::Reference< css::frame::XFrame > xFrame,
197 css::uno::Reference< css::uno::XComponentContext > xContext) :
199 m_nAsyncGetFocusId(nullptr),
200 m_xWidget(m_xBuilder->weld_combo_box(
"find")),
203 m_pAcc(
svt::AcceleratorExecute::createAcceleratorHelper())
208 m_xWidget->set_entry_completion(
true,
true);
229 if (
nCount == REMEMBER_SIZE)
241 css::uno::Reference<css::frame::XController>
xController(
m_xFrame->getController(), css::uno::UNO_SET_THROW);
242 css::uno::Reference<css::frame::XModel>
xModel(
xController->getModel(), css::uno::UNO_SET_THROW);
243 css::uno::Reference<css::container::XIndexAccess> xIndexAccess(
xModel->getCurrentSelection(), css::uno::UNO_QUERY_THROW);
244 if (xIndexAccess->getCount() > 0)
246 css::uno::Reference<css::text::XTextRange> xTextRange(xIndexAccess->getByIndex(0), css::uno::UNO_QUERY_THROW);
247 aString = xTextRange->getString();
254 if ( !aString.isEmpty() )
274 bool bShift = rKeyEvent.GetKeyCode().IsShift();
275 bool bMod1 = rKeyEvent.GetKeyCode().IsMod1();
276 sal_uInt16
nCode = rKeyEvent.GetKeyCode().GetCode();
282 GrabFocusToDocument();
285 css::uno::Reference< css::beans::XPropertySet > xPropSet(
m_xFrame, css::uno::UNO_QUERY);
288 css::uno::Reference< css::frame::XLayoutManager > xLayoutManager;
289 css::uno::Any aValue = xPropSet->getPropertyValue(
"LayoutManager");
290 aValue >>= xLayoutManager;
291 if (xLayoutManager.is())
293 static const OUStringLiteral sResourceURL(
u"private:resource/toolbar/findbar" );
294 xLayoutManager->hideElement( sResourceURL );
295 xLayoutManager->destroyElement( sResourceURL );
302 const OUString
aCommand(m_pAcc->findCommand(awtKey));
310 ActivateFind(bShift);
313 else if (
aCommand ==
".uno:SearchDialog")
314 bRet = m_pAcc->execute(awtKey);
317 if (
aCommand ==
"vnd.sun.star.findbar:FocusToFindbar")
324 return bRet || ChildKeyInput(rKeyEvent);
352 m_nAsyncGetFocusId =
nullptr;
421class SearchToolbarControllersManager
425 SearchToolbarControllersManager();
427 static SearchToolbarControllersManager& createControllersManager();
429 void registryController(
const css::uno::Reference< css::frame::XFrame >& xFrame,
const css::uno::Reference< css::frame::XStatusListener >& xStatusListener,
const OUString& sCommandURL );
430 void freeController (
const css::uno::Reference< css::frame::XFrame >& xFrame,
const OUString& sCommandURL );
431 css::uno::Reference< css::frame::XStatusListener > findController(
const css::uno::Reference< css::frame::XFrame >& xFrame,
const OUString& sCommandURL );
438 typedef ::std::vector< css::beans::PropertyValue > SearchToolbarControllersVec;
439 typedef ::std::map< css::uno::Reference< css::frame::XFrame >, SearchToolbarControllersVec > SearchToolbarControllersMap;
440 SearchToolbarControllersMap aSearchToolbarControllersMap;
441 std::vector<OUString> m_aSearchStrings;
445SearchToolbarControllersManager::SearchToolbarControllersManager()
449SearchToolbarControllersManager& SearchToolbarControllersManager::createControllersManager()
451 static SearchToolbarControllersManager theSearchToolbarControllersManager;
452 return theSearchToolbarControllersManager;
455void SearchToolbarControllersManager::saveSearchHistory(
const FindTextFieldControl* pFindTextFieldControl)
457 const sal_Int32 nECount( pFindTextFieldControl->
get_count() );
458 m_aSearchStrings.resize( nECount );
459 for( sal_Int32 i=0;
i<nECount; ++
i )
461 m_aSearchStrings[
i] = pFindTextFieldControl->
get_text(i);
465void SearchToolbarControllersManager::loadSearchHistory(
FindTextFieldControl* pFindTextFieldControl)
467 for(
size_t i=0;
i<m_aSearchStrings.size(); ++
i )
469 pFindTextFieldControl->
append_text(m_aSearchStrings[i]);
473void SearchToolbarControllersManager::registryController(
const css::uno::Reference< css::frame::XFrame >& xFrame,
const css::uno::Reference< css::frame::XStatusListener >& xStatusListener,
const OUString& sCommandURL )
475 SearchToolbarControllersMap::iterator pIt = aSearchToolbarControllersMap.find(xFrame);
476 if (pIt == aSearchToolbarControllersMap.end())
478 SearchToolbarControllersVec lControllers(1);
479 lControllers[0].Name = sCommandURL;
480 lControllers[0].Value <<= xStatusListener;
481 aSearchToolbarControllersMap.emplace(xFrame, lControllers);
485 sal_Int32 nSize = pIt->second.size();
486 for (sal_Int32 i=0;
i<nSize; ++
i)
488 if (pIt->second[i].Name == sCommandURL)
492 pIt->second.resize(nSize+1);
493 pIt->second[nSize].Name = sCommandURL;
494 pIt->second[nSize].Value <<= xStatusListener;
498void SearchToolbarControllersManager::freeController(
const css::uno::Reference< css::frame::XFrame >& xFrame,
const OUString& sCommandURL )
500 SearchToolbarControllersMap::iterator pIt = aSearchToolbarControllersMap.find(xFrame);
501 if (pIt != aSearchToolbarControllersMap.end())
503 auto pItCtrl = std::find_if(pIt->second.begin(), pIt->second.end(),
504 [&sCommandURL](
const css::beans::PropertyValue& rCtrl) { return rCtrl.Name == sCommandURL; });
505 if (pItCtrl != pIt->second.end())
506 pIt->second.erase(pItCtrl);
508 if (pIt->second.empty())
509 aSearchToolbarControllersMap.erase(pIt);
513css::uno::Reference< css::frame::XStatusListener > SearchToolbarControllersManager::findController(
const css::uno::Reference< css::frame::XFrame >& xFrame,
const OUString& sCommandURL )
515 css::uno::Reference< css::frame::XStatusListener > xStatusListener;
517 SearchToolbarControllersMap::iterator pIt = aSearchToolbarControllersMap.find(xFrame);
518 if (pIt != aSearchToolbarControllersMap.end())
520 auto pItCtrl = std::find_if(pIt->second.begin(), pIt->second.end(),
521 [&sCommandURL](
const css::beans::PropertyValue& rCtrl) { return rCtrl.Name == sCommandURL; });
522 if (pItCtrl != pIt->second.end())
523 pItCtrl->Value >>= xStatusListener;
526 return xStatusListener;
529typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> FindTextToolbarController_Base;
530class FindTextToolbarController :
public FindTextToolbarController_Base
534 FindTextToolbarController(
const css::uno::Reference< css::uno::XComponentContext > & rxContext );
542 virtual void SAL_CALL
dispose()
override;
545 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
548 virtual css::uno::Reference< css::awt::XWindow > SAL_CALL createItemWindow(
const css::uno::Reference< css::awt::XWindow >& Parent )
override;
551 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& Event )
override;
557 void textfieldChanged();
567FindTextToolbarController::FindTextToolbarController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext )
568 : FindTextToolbarController_Base(rxContext, css::
uno::
Reference< css::frame::XFrame >(), COMMAND_FINDTEXT)
569 , m_pFindTextFieldControl(nullptr)
577OUString SAL_CALL FindTextToolbarController::getImplementationName()
579 return "com.sun.star.svx.FindTextToolboxController";
582sal_Bool SAL_CALL FindTextToolbarController::supportsService(
const OUString& ServiceName )
587css::uno::Sequence< OUString > SAL_CALL FindTextToolbarController::getSupportedServiceNames()
589 return {
"com.sun.star.frame.ToolbarController" };
593void SAL_CALL FindTextToolbarController::dispose()
597 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
600 if (m_pFindTextFieldControl !=
nullptr) {
601 SearchToolbarControllersManager::createControllersManager()
602 .saveSearchHistory(m_pFindTextFieldControl);
603 m_pFindTextFieldControl.disposeAndClear();
608void SAL_CALL FindTextToolbarController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
616 m_nDownSearchId = pToolBox->
GetItemId(COMMAND_DOWNSEARCH);
617 m_nUpSearchId = pToolBox->
GetItemId(COMMAND_UPSEARCH);
618 m_nFindAllId = pToolBox->
GetItemId(COMMAND_FINDALL);
621 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
624css::uno::Reference< css::awt::XWindow > SAL_CALL FindTextToolbarController::createItemWindow(
const css::uno::Reference< css::awt::XWindow >& xParent )
626 css::uno::Reference< css::awt::XWindow > xItemWindow;
634 m_pFindTextFieldControl->connect_changed(
LINK(
this, FindTextToolbarController, EditModifyHdl));
635 SearchToolbarControllersManager::createControllersManager().loadSearchHistory(m_pFindTextFieldControl);
643void SAL_CALL FindTextToolbarController::statusChanged(
const css::frame::FeatureStateEvent& rEvent )
649 OUString aFeatureURL = rEvent.FeatureURL.Complete;
650 if ( aFeatureURL ==
"AppendSearchHistory" )
652 m_pFindTextFieldControl->Remember_Impl(m_pFindTextFieldControl->get_active_text());
661 #if HAVE_FEATURE_DESKTOP
668void FindTextToolbarController::textfieldChanged() {
672 if ( pToolBox && m_pFindTextFieldControl )
674 bool enableButtons = !m_pFindTextFieldControl->get_active_text().isEmpty();
675 pToolBox->
EnableItem(m_nDownSearchId, enableButtons);
676 pToolBox->
EnableItem(m_nUpSearchId, enableButtons);
677 pToolBox->
EnableItem(m_nFindAllId, enableButtons);
681typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> UpDownSearchToolboxController_Base;
682class UpDownSearchToolboxController :
public UpDownSearchToolboxController_Base
687 UpDownSearchToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext,
Type eType );
695 virtual void SAL_CALL
dispose()
override;
698 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
701 virtual void SAL_CALL execute( sal_Int16 KeyModifier )
override;
704 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& rEvent )
override;
710UpDownSearchToolboxController::UpDownSearchToolboxController(
const css::uno::Reference< css::uno::XComponentContext > & rxContext,
Type eType )
711 : UpDownSearchToolboxController_Base( rxContext,
713 (
eType ==
UP) ? OUString( COMMAND_UPSEARCH ): OUString( COMMAND_DOWNSEARCH ) ),
719OUString SAL_CALL UpDownSearchToolboxController::getImplementationName()
721 return meType == UpDownSearchToolboxController::UP?
722 OUString(
"com.sun.star.svx.UpSearchToolboxController" ) :
723 OUString(
"com.sun.star.svx.DownSearchToolboxController" );
726sal_Bool SAL_CALL UpDownSearchToolboxController::supportsService(
const OUString& ServiceName )
731css::uno::Sequence< OUString > SAL_CALL UpDownSearchToolboxController::getSupportedServiceNames()
733 return {
"com.sun.star.frame.ToolbarController" };
737void SAL_CALL UpDownSearchToolboxController::dispose()
741 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
747void SAL_CALL UpDownSearchToolboxController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
750 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
754void SAL_CALL UpDownSearchToolboxController::execute( sal_Int16 )
757 throw css::lang::DisposedException();
762 impl_executeSearch(m_xContext, m_xFrame, pToolBox, meType == UP );
764 css::frame::FeatureStateEvent
aEvent;
765 aEvent.FeatureURL.Complete =
"AppendSearchHistory";
766 css::uno::Reference< css::frame::XStatusListener > xStatusListener = SearchToolbarControllersManager::createControllersManager().findController(m_xFrame, COMMAND_FINDTEXT);
767 if (xStatusListener.is())
768 xStatusListener->statusChanged( aEvent );
772void SAL_CALL UpDownSearchToolboxController::statusChanged(
const css::frame::FeatureStateEvent& )
776typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> MatchCaseToolboxController_Base;
777class MatchCaseToolboxController :
public MatchCaseToolboxController_Base
780 MatchCaseToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext );
788 virtual void SAL_CALL
dispose()
override;
791 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
794 virtual css::uno::Reference< css::awt::XWindow > SAL_CALL createItemWindow(
const css::uno::Reference< css::awt::XWindow >& Parent )
override;
797 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& rEvent )
override;
803MatchCaseToolboxController::MatchCaseToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext )
804 : MatchCaseToolboxController_Base( rxContext,
807 , m_xMatchCaseControl(nullptr)
812OUString SAL_CALL MatchCaseToolboxController::getImplementationName()
814 return "com.sun.star.svx.MatchCaseToolboxController";
817sal_Bool SAL_CALL MatchCaseToolboxController::supportsService(
const OUString& ServiceName )
822css::uno::Sequence< OUString > SAL_CALL MatchCaseToolboxController::getSupportedServiceNames()
824 return {
"com.sun.star.frame.ToolbarController" };
828void SAL_CALL MatchCaseToolboxController::dispose()
832 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
836 m_xMatchCaseControl.disposeAndClear();
840void SAL_CALL MatchCaseToolboxController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
844 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
847css::uno::Reference< css::awt::XWindow > SAL_CALL MatchCaseToolboxController::createItemWindow(
const css::uno::Reference< css::awt::XWindow >& xParent )
849 css::uno::Reference< css::awt::XWindow > xItemWindow;
863void SAL_CALL MatchCaseToolboxController::statusChanged(
const css::frame::FeatureStateEvent& )
867typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> SearchFormattedToolboxController_Base;
868class SearchFormattedToolboxController :
public SearchFormattedToolboxController_Base
871 SearchFormattedToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext );
879 virtual void SAL_CALL
dispose()
override;
882 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
885 virtual css::uno::Reference< css::awt::XWindow > SAL_CALL createItemWindow(
const css::uno::Reference< css::awt::XWindow >& Parent )
override;
888 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& rEvent )
override;
894SearchFormattedToolboxController::SearchFormattedToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext )
895 : SearchFormattedToolboxController_Base( rxContext,
897 COMMAND_SEARCHFORMATTED )
898 , m_xSearchFormattedControl(nullptr)
903OUString SAL_CALL SearchFormattedToolboxController::getImplementationName()
905 return "com.sun.star.svx.SearchFormattedToolboxController";
908sal_Bool SAL_CALL SearchFormattedToolboxController::supportsService(
const OUString& ServiceName )
913css::uno::Sequence< OUString > SAL_CALL SearchFormattedToolboxController::getSupportedServiceNames()
915 return {
"com.sun.star.frame.ToolbarController" };
919void SAL_CALL SearchFormattedToolboxController::dispose()
923 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
927 m_xSearchFormattedControl.disposeAndClear();
931void SAL_CALL SearchFormattedToolboxController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
935 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
938css::uno::Reference< css::awt::XWindow > SAL_CALL SearchFormattedToolboxController::createItemWindow(
const css::uno::Reference< css::awt::XWindow >& xParent )
940 css::uno::Reference< css::awt::XWindow > xItemWindow;
954void SAL_CALL SearchFormattedToolboxController::statusChanged(
const css::frame::FeatureStateEvent& )
958typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> FindAllToolboxController_Base;
959class FindAllToolboxController :
public FindAllToolboxController_Base
962 FindAllToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext );
970 virtual void SAL_CALL
dispose()
override;
973 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
976 virtual void SAL_CALL execute( sal_Int16 KeyModifier )
override;
979 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& rEvent )
override;
982FindAllToolboxController::FindAllToolboxController(
const css::uno::Reference< css::uno::XComponentContext > & rxContext )
983 : FindAllToolboxController_Base( rxContext,
990OUString SAL_CALL FindAllToolboxController::getImplementationName()
992 return "com.sun.star.svx.FindAllToolboxController";
996sal_Bool SAL_CALL FindAllToolboxController::supportsService(
const OUString& ServiceName )
1001css::uno::Sequence< OUString > SAL_CALL FindAllToolboxController::getSupportedServiceNames()
1003 return {
"com.sun.star.frame.ToolbarController" };
1007void SAL_CALL FindAllToolboxController::dispose()
1011 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
1017void SAL_CALL FindAllToolboxController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
1020 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
1024void SAL_CALL FindAllToolboxController::execute( sal_Int16 )
1027 throw css::lang::DisposedException();
1032 impl_executeSearch(m_xContext, m_xFrame, pToolBox,
false,
true);
1036void SAL_CALL FindAllToolboxController::statusChanged(
const css::frame::FeatureStateEvent& )
1040typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> ExitSearchToolboxController_Base;
1041class ExitSearchToolboxController :
public ExitSearchToolboxController_Base
1044 ExitSearchToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext );
1052 virtual void SAL_CALL
dispose()
override;
1055 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
1058 virtual void SAL_CALL execute( sal_Int16 KeyModifier )
override;
1061 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& rEvent )
override;
1064ExitSearchToolboxController::ExitSearchToolboxController(
const css::uno::Reference< css::uno::XComponentContext > & rxContext )
1065 : ExitSearchToolboxController_Base( rxContext,
1072OUString SAL_CALL ExitSearchToolboxController::getImplementationName()
1074 return "com.sun.star.svx.ExitFindbarToolboxController";
1078sal_Bool SAL_CALL ExitSearchToolboxController::supportsService(
const OUString& ServiceName )
1083css::uno::Sequence< OUString > SAL_CALL ExitSearchToolboxController::getSupportedServiceNames()
1085 return {
"com.sun.star.frame.ToolbarController" };
1089void SAL_CALL ExitSearchToolboxController::dispose()
1093 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
1099void SAL_CALL ExitSearchToolboxController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
1102 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
1106void SAL_CALL ExitSearchToolboxController::execute( sal_Int16 )
1113 css::uno::Reference< css::beans::XPropertySet > xPropSet(m_xFrame, css::uno::UNO_QUERY);
1116 css::uno::Reference< css::frame::XLayoutManager > xLayoutManager;
1117 css::uno::Any aValue = xPropSet->getPropertyValue(
"LayoutManager");
1118 aValue >>= xLayoutManager;
1119 if (xLayoutManager.is())
1121 static const OUStringLiteral sResourceURL( u
"private:resource/toolbar/findbar" );
1122 xLayoutManager->hideElement( sResourceURL );
1123 xLayoutManager->destroyElement( sResourceURL );
1129void SAL_CALL ExitSearchToolboxController::statusChanged(
const css::frame::FeatureStateEvent& )
1133typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> SearchLabelToolboxController_Base;
1134class SearchLabelToolboxController :
public SearchLabelToolboxController_Base
1137 SearchLabelToolboxController(
const css::uno::Reference< css::uno::XComponentContext >& rxContext );
1145 virtual void SAL_CALL
dispose()
override;
1148 virtual void SAL_CALL initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
override;
1151 virtual css::uno::Reference< css::awt::XWindow > SAL_CALL createItemWindow(
const css::uno::Reference< css::awt::XWindow >& Parent )
override;
1154 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent& rEvent )
override;
1160SearchLabelToolboxController::SearchLabelToolboxController(
const css::uno::Reference< css::uno::XComponentContext > & rxContext )
1161 : SearchLabelToolboxController_Base( rxContext,
1163 ".uno:SearchLabel" )
1168OUString SAL_CALL SearchLabelToolboxController::getImplementationName()
1170 return "com.sun.star.svx.SearchLabelToolboxController";
1174sal_Bool SAL_CALL SearchLabelToolboxController::supportsService(
const OUString& ServiceName )
1179css::uno::Sequence< OUString > SAL_CALL SearchLabelToolboxController::getSupportedServiceNames()
1181 return {
"com.sun.star.frame.ToolbarController" };
1185void SAL_CALL SearchLabelToolboxController::dispose()
1189 SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL);
1192 m_xSL.disposeAndClear();
1196void SAL_CALL SearchLabelToolboxController::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
1199 SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(
this), m_aCommandURL);
1203void SAL_CALL SearchLabelToolboxController::statusChanged(
const css::frame::FeatureStateEvent& )
1208 m_xSL->set_label(aStr);
1209 m_xSL->SetOptimalSize();
1210 Size aSize(m_xSL->GetSizePixel());
1212 m_xSL->SetSizePixel(
Size(nWidth, aSize.Height()));
1216css::uno::Reference< css::awt::XWindow > SAL_CALL SearchLabelToolboxController::createItemWindow(
const css::uno::Reference< css::awt::XWindow >& Parent )
1220 if (getToolboxId(nId, &pToolBox))
1224 m_xSL->SetSizePixel(
Size(16, m_xSL->GetSizePixel().Height()));
1230class FindbarDispatcher :
public css::lang::XServiceInfo,
1231 public css::lang::XInitialization,
1232 public css::frame::XDispatchProvider,
1233 public css::frame::XDispatch,
1238 FindbarDispatcher();
1239 virtual ~FindbarDispatcher()
override;
1242 virtual css::uno::Any SAL_CALL
queryInterface(
const css::uno::Type& aType )
override;
1243 virtual void SAL_CALL
acquire() noexcept override;
1244 virtual
void SAL_CALL release() noexcept override;
1247 virtual OUString SAL_CALL getImplementationName() override;
1248 virtual
sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
1249 virtual css::
uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
1252 virtual
void SAL_CALL initialize( const css::
uno::Sequence< css::
uno::Any >& aArguments ) override;
1255 virtual css::
uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch( const css::util::URL& aURL, const OUString& sTargetFrameName , sal_Int32 nSearchFlags ) override;
1256 virtual css::
uno::Sequence< css::
uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches( const css::
uno::Sequence< css::frame::DispatchDescriptor >& lDescriptions ) override;
1259 virtual
void SAL_CALL dispatch( const css::util::URL& aURL, const css::
uno::Sequence< css::beans::PropertyValue >& lArguments ) override;
1260 virtual
void SAL_CALL addStatusListener( const css::
uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) override;
1261 virtual
void SAL_CALL removeStatusListener( const css::
uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) override;
1265 css::
uno::Reference< css::frame::XFrame > m_xFrame;
1269FindbarDispatcher::FindbarDispatcher()
1273FindbarDispatcher::~FindbarDispatcher()
1279css::uno::Any SAL_CALL FindbarDispatcher::queryInterface(
const css::uno::Type& aType )
1281 css::uno::Any aReturn( ::cppu::queryInterface( aType,
1282 static_cast< css::lang::XServiceInfo*
>(
this),
1283 static_cast< css::lang::XInitialization*
>(
this),
1284 static_cast< css::frame::XDispatchProvider*
>(
this),
1285 static_cast< css::frame::XDispatch*
>(
this)) );
1287 if ( aReturn.hasValue() )
1290 return OWeakObject::queryInterface( aType );
1293void SAL_CALL FindbarDispatcher::acquire() noexcept
1295 OWeakObject::acquire();
1298void SAL_CALL FindbarDispatcher::release() noexcept
1300 OWeakObject::release();
1304OUString SAL_CALL FindbarDispatcher::getImplementationName()
1306 return "com.sun.star.comp.svx.Impl.FindbarDispatcher";
1309sal_Bool SAL_CALL FindbarDispatcher::supportsService(
const OUString& ServiceName )
1314css::uno::Sequence< OUString > SAL_CALL FindbarDispatcher::getSupportedServiceNames()
1316 return {
"com.sun.star.comp.svx.FindbarDispatcher",
"com.sun.star.frame.ProtocolHandler" };
1320void SAL_CALL FindbarDispatcher::initialize(
const css::uno::Sequence< css::uno::Any >& aArguments )
1327css::uno::Reference< css::frame::XDispatch > SAL_CALL FindbarDispatcher::queryDispatch(
const css::util::URL& aURL,
const OUString& , sal_Int32 )
1329 css::uno::Reference< css::frame::XDispatch >
xDispatch;
1331 if (
aURL.Protocol ==
"vnd.sun.star.findbar:" )
1337css::uno::Sequence < css::uno::Reference< css::frame::XDispatch > > SAL_CALL FindbarDispatcher::queryDispatches(
const css::uno::Sequence < css::frame::DispatchDescriptor >& seqDescripts )
1339 sal_Int32
nCount = seqDescripts.getLength();
1340 css::uno::Sequence < css::uno::Reference < XDispatch > > lDispatcher( nCount );
1342 std::transform(seqDescripts.begin(), seqDescripts.end(), lDispatcher.getArray(),
1343 [
this](
const css::frame::DispatchDescriptor& rDescript) -> css::uno::Reference < XDispatch > {
1344 return queryDispatch( rDescript.FeatureURL, rDescript.FrameName, rDescript.SearchFlags ); });
1350void SAL_CALL FindbarDispatcher::dispatch(
const css::util::URL& aURL,
const css::uno::Sequence < css::beans::PropertyValue >& )
1353 if (
aURL.Path !=
"FocusToFindbar" )
1356 css::uno::Reference< css::beans::XPropertySet > xPropSet(m_xFrame, css::uno::UNO_QUERY);
1360 css::uno::Reference< css::frame::XLayoutManager > xLayoutManager;
1361 css::uno::Any aValue = xPropSet->getPropertyValue(
"LayoutManager");
1362 aValue >>= xLayoutManager;
1363 if (!xLayoutManager.is())
1366 static const OUStringLiteral sResourceURL( u
"private:resource/toolbar/findbar" );
1367 css::uno::Reference< css::ui::XUIElement > xUIElement = xLayoutManager->getElement(sResourceURL);
1368 if (!xUIElement.is())
1371 xLayoutManager->createElement( sResourceURL );
1372 xLayoutManager->showElement( sResourceURL );
1373 xUIElement = xLayoutManager->getElement( sResourceURL );
1374 if ( !xUIElement.is() )
1378 css::uno::Reference< css::awt::XWindow > xWindow(xUIElement->getRealInterface(), css::uno::UNO_QUERY);
1381 pToolBox->
set_id(
"FindBar");
1385 ToolBox::ImplToolItems::size_type nItemCount = pToolBox->
GetItemCount();
1386 for ( ToolBox::ImplToolItems::size_type i=0;
i<nItemCount; ++
i )
1390 if ( sItemCommand == COMMAND_FINDTEXT )
1397 if ( pFindTextFieldControl )
1406void SAL_CALL FindbarDispatcher::addStatusListener(
const css::uno::Reference< css::frame::XStatusListener >& ,
const css::util::URL& )
1410void SAL_CALL FindbarDispatcher::removeStatusListener(
const css::uno::Reference< css::frame::XStatusListener >& ,
const css::util::URL& )
1416extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1418 css::uno::XComponentContext *context,
1419 css::uno::Sequence<css::uno::Any>
const &)
1421 return cppu::acquire(
new FindTextToolbarController(context));
1424extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1426 css::uno::XComponentContext *context,
1427 css::uno::Sequence<css::uno::Any>
const &)
1429 return cppu::acquire(
new ExitSearchToolboxController(context));
1432extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1434 css::uno::XComponentContext *context,
1435 css::uno::Sequence<css::uno::Any>
const &)
1437 return cppu::acquire(
new UpDownSearchToolboxController(context, UpDownSearchToolboxController::UP));
1440extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1442 css::uno::XComponentContext *context,
1443 css::uno::Sequence<css::uno::Any>
const &)
1445 return cppu::acquire(
new UpDownSearchToolboxController(context, UpDownSearchToolboxController::DOWN));
1448extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1450 css::uno::XComponentContext *context,
1451 css::uno::Sequence<css::uno::Any>
const &)
1453 return cppu::acquire(
new MatchCaseToolboxController(context));
1456extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1458 css::uno::XComponentContext *context,
1459 css::uno::Sequence<css::uno::Any>
const &)
1461 return cppu::acquire(
new SearchFormattedToolboxController(context));
1464extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1466 css::uno::XComponentContext *context,
1467 css::uno::Sequence<css::uno::Any>
const &)
1469 return cppu::acquire(
new FindAllToolboxController(context));
1472extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1474 css::uno::XComponentContext *context,
1475 css::uno::Sequence<css::uno::Any>
const &)
1477 return cppu::acquire(
new SearchLabelToolboxController(context));
1480extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
1482 SAL_UNUSED_PARAMETER css::uno::XComponentContext *,
1483 css::uno::Sequence<css::uno::Any>
const &)
1485 return cppu::acquire(
new FindbarDispatcher);
Reference< XComponentContext > m_xContext
css::uno::Reference< css::lang::XComponent > m_xFrame
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
static void RemoveUserEvent(ImplSVEvent *nUserEvent)
static vcl::Window * GetFocusWindow()
std::unique_ptr< svt::AcceleratorExecute > m_pAcc
virtual ~FindTextFieldControl() override
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual void dispose() override
OUString get_active_text() const
void append_text(const OUString &rText)
css::uno::Reference< css::frame::XFrame > m_xFrame
OUString get_text(int nIndex) const
ImplSVEvent * m_nAsyncGetFocusId
void SetTextToSelected_Impl()
void Remember_Impl(const OUString &rStr)
Link< weld::ComboBox &, void > m_aChangeHdl
void set_entry_message_type(weld::EntryMessageType eType)
void ActivateFind(bool bShift)
void connect_changed(const Link< weld::ComboBox &, void > &rLink)
std::unique_ptr< weld::ComboBox > m_xWidget
FindTextFieldControl(vcl::Window *pParent, css::uno::Reference< css::frame::XFrame > xFrame, css::uno::Reference< css::uno::XComponentContext > xContext)
bool ControlHasFocus() const
virtual void dispose() override
virtual void GetFocus() override
void InitControlBase(weld::Widget *pWidget)
bool IsCTLFontEnabled() const
static OUString GetSearchLabel()
static void SetSearchLabel(const SearchLabel &rSL)
static css::uno::Reference< css::awt::XWindow > GetInterface(vcl::Window *pWindow)
static vcl::Window * GetWindow(const css::uno::Reference< css::awt::XWindow > &rxWindow)
reference_type * get() const
static VclPtr< reference_type > Create(Arg &&... arg)
virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) SAL_OVERRIDE
static css::awt::KeyEvent st_VCLKey2AWTKey(const vcl::KeyCode &aKey)
vcl::Window * GetParent() const
virtual void SetSizePixel(const Size &rNewSize)
void set_id(const OUString &rID)
void GrabFocusToDocument()
OUString SvxResId(TranslateId aId)
Reference< XDispatch > xDispatch
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
Sequence< PropertyValue > aArguments
constexpr sal_uInt16 KEY_RETURN
constexpr sal_uInt16 KEY_F3
constexpr sal_uInt16 KEY_ESCAPE
constexpr sal_uInt16 KEY_F
constexpr sal_uInt16 KEY_G
#define LINK(Instance, Class, Member)
css::uno::Sequence< css::beans::PropertyValue > InitPropertySequence(::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
Reference< XController > xController
Reference< XFrame > xFrame
Reference< XModel > xModel
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_ExitFindbarToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_FindTextToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_UpSearchToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_DownSearchToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
IMPL_LINK(FindTextFieldControl, KeyInputHdl, const KeyEvent &, rKeyEvent, bool)
IMPL_LINK_NOARG(FindTextFieldControl, ActivateHdl, weld::ComboBox &, bool)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_svx_Impl_FindbarDispatcher_get_implementation(SAL_UNUSED_PARAMETER css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_SearchLabelToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_SearchFormattedToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_FindAllToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_MatchCaseToolboxController_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)