summaryrefslogtreecommitdiff
path: root/svx/source/tbxctrls/tbunosearchcontrollers.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/tbxctrls/tbunosearchcontrollers.cxx')
-rw-r--r--svx/source/tbxctrls/tbunosearchcontrollers.cxx213
1 files changed, 171 insertions, 42 deletions
diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx
index d67e5aca88a3..5270b076afa7 100644
--- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx
+++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx
@@ -17,14 +17,15 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
#include "tbunosearchcontrollers.hxx"
+
#include <svx/dialogs.hrc>
#include <svx/dialmgr.hxx>
#include <comphelper/processfactory.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
+#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/text/XTextRange.hpp>
#include <com/sun/star/ui/XUIElement.hpp>
#include <com/sun/star/util/URL.hpp>
@@ -42,23 +43,61 @@ namespace svx
static const char SEARCHITEM_SEARCHSTRING[] = "SearchItem.SearchString";
static const char SEARCHITEM_SEARCHBACKWARD[] = "SearchItem.Backward";
static const char SEARCHITEM_SEARCHFLAGS[] = "SearchItem.SearchFlags";
+static const char SEARCHITEM_TRANSLITERATEFLAGS[] = "SearchItem.TransliterateFlags";
static const char COMMAND_EXECUTESEARCH[] = ".uno:ExecuteSearch";
static const char COMMAND_FINDTEXT[] = ".uno:FindText";
static const char COMMAND_DOWNSEARCH[] = ".uno:DownSearch";
static const char COMMAND_UPSEARCH[] = ".uno:UpSearch";
static const char COMMAND_EXITSEARCH[] = ".uno:ExitSearch";
+static const char COMMAND_MATCHCASE[] = ".uno:MatchCase";
static const char COMMAND_APPENDSEARCHHISTORY[] = "AppendSearchHistory";
static const sal_Int32 REMEMBER_SIZE = 10;
-void impl_executeSearch( const css::uno::Reference< css::uno::XComponentContext >& rxContext, const css::uno::Reference< css::frame::XFrame >& xFrame, const css::uno::Sequence< css::beans::PropertyValue >& lArgs )
+void impl_executeSearch( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
+ const css::uno::Reference< css::frame::XFrame >& xFrame,
+ const ToolBox* pToolBox,
+ const sal_Bool aSearchBackwards = false )
{
css::uno::Reference< css::util::XURLTransformer > xURLTransformer( css::util::URLTransformer::create( rxContext ) );
css::util::URL aURL;
aURL.Complete = OUString(COMMAND_EXECUTESEARCH);
xURLTransformer->parseStrict(aURL);
+ OUString sFindText;
+ sal_Bool aMatchCase = false;
+ if ( pToolBox )
+ {
+ sal_uInt16 nItemCount = pToolBox->GetItemCount();
+ for ( sal_uInt16 i=0; i<nItemCount; ++i )
+ {
+ OUString sItemCommand = pToolBox->GetItemCommand(i);
+ if ( sItemCommand == COMMAND_FINDTEXT )
+ {
+ Window* pItemWin = pToolBox->GetItemWindow(i);
+ if (pItemWin)
+ sFindText = pItemWin->GetText();
+ } else if ( sItemCommand == COMMAND_MATCHCASE )
+ {
+ CheckBox* pItemWin = (CheckBox*) pToolBox->GetItemWindow(i);
+ if (pItemWin)
+ aMatchCase = pItemWin->IsChecked();
+ }
+ }
+ }
+
+ css::uno::Sequence< css::beans::PropertyValue > lArgs(4);
+ lArgs[0].Name = OUString(SEARCHITEM_SEARCHSTRING);
+ lArgs[0].Value <<= sFindText;
+ lArgs[1].Name = OUString(SEARCHITEM_SEARCHBACKWARD);
+ lArgs[1].Value <<= aSearchBackwards;
+ lArgs[2].Name = OUString(SEARCHITEM_SEARCHFLAGS);
+ lArgs[2].Value <<= (sal_Int32)0;
+ lArgs[3].Name = OUString(SEARCHITEM_TRANSLITERATEFLAGS);
+ lArgs[3].Value <<= (sal_Int32)(!aMatchCase ?
+ com::sun::star::i18n::TransliterationModules_IGNORE_CASE : 0);
+
css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider(xFrame, css::uno::UNO_QUERY);
if ( xDispatchProvider.is() )
{
@@ -163,22 +202,10 @@ long FindTextFieldControl::PreNotify( NotifyEvent& rNEvt )
{
Remember_Impl(GetText());
- OUString sFindText = GetText();
- css::uno::Sequence< css::beans::PropertyValue > lArgs(3);
-
- lArgs[0].Name = OUString(SEARCHITEM_SEARCHSTRING);
- lArgs[0].Value <<= sFindText;
-
- lArgs[1].Name = OUString(SEARCHITEM_SEARCHBACKWARD);
- if (bShift)
- lArgs[1].Value <<= sal_True;
- else
- lArgs[1].Value <<= sal_False;
-
- lArgs[2].Name = OUString(SEARCHITEM_SEARCHFLAGS);
- lArgs[2].Value <<= (sal_Int32)0;
+ Window* pWindow = GetParent();
+ ToolBox* pToolBox = (ToolBox*)pWindow;
- impl_executeSearch( m_xContext, m_xFrame, lArgs);
+ impl_executeSearch( m_xContext, m_xFrame, pToolBox, bShift);
nRet = 1;
}
break;
@@ -560,34 +587,10 @@ void SAL_CALL UpDownSearchToolboxController::execute( sal_Int16 /*KeyModifier*/
if ( m_bDisposed )
throw css::lang::DisposedException();
- OUString sFindText;
Window* pWindow = VCLUnoHelper::GetWindow( getParent() );
ToolBox* pToolBox = (ToolBox*)pWindow;
- if ( pToolBox )
- {
- sal_uInt16 nItemCount = pToolBox->GetItemCount();
- for ( sal_uInt16 i=0; i<nItemCount; ++i )
- {
- OUString sItemCommand = pToolBox->GetItemCommand(i);
- if ( sItemCommand == COMMAND_FINDTEXT )
- {
- Window* pItemWin = pToolBox->GetItemWindow(i);
- if (pItemWin)
- sFindText = pItemWin->GetText();
- break;
- }
- }
- }
- css::uno::Sequence< css::beans::PropertyValue > lArgs(3);
- lArgs[0].Name = OUString(SEARCHITEM_SEARCHSTRING);
- lArgs[0].Value <<= sFindText;
- lArgs[1].Name = OUString(SEARCHITEM_SEARCHBACKWARD);
- lArgs[1].Value <<= sal_Bool( meType == UP );
- lArgs[2].Name = OUString(SEARCHITEM_SEARCHFLAGS);
- lArgs[2].Value <<= (sal_Int32)0;
-
- impl_executeSearch(m_xContext, m_xFrame, lArgs);
+ impl_executeSearch(m_xContext, m_xFrame, pToolBox, sal_Bool( meType == UP ));
css::frame::FeatureStateEvent aEvent;
aEvent.FeatureURL.Complete = OUString(COMMAND_APPENDSEARCHHISTORY);
@@ -603,6 +606,125 @@ void SAL_CALL UpDownSearchToolboxController::statusChanged( const css::frame::Fe
if ( m_bDisposed )
return;
}
+
+//-----------------------------------------------------------------------------------------------------------
+// MatchCaseToolboxController
+
+MatchCaseToolboxController::MatchCaseToolboxController( const css::uno::Reference< css::uno::XComponentContext >& rxContext )
+ :svt::ToolboxController( rxContext,
+ css::uno::Reference< css::frame::XFrame >(),
+ OUString(COMMAND_MATCHCASE) )
+{
+}
+
+MatchCaseToolboxController::~MatchCaseToolboxController()
+{
+}
+
+// XInterface
+css::uno::Any SAL_CALL MatchCaseToolboxController::queryInterface( const css::uno::Type& aType ) throw ( css::uno::RuntimeException )
+{
+ css::uno::Any a = ToolboxController::queryInterface( aType );
+ if ( a.hasValue() )
+ return a;
+
+ return ::cppu::queryInterface( aType, static_cast< css::lang::XServiceInfo* >( this ) );
+}
+
+void SAL_CALL MatchCaseToolboxController::acquire() throw ()
+{
+ ToolboxController::acquire();
+}
+
+void SAL_CALL MatchCaseToolboxController::release() throw ()
+{
+ ToolboxController::release();
+}
+
+// XServiceInfo
+OUString SAL_CALL MatchCaseToolboxController::getImplementationName() throw( css::uno::RuntimeException )
+{
+ return getImplementationName_Static();
+}
+
+sal_Bool SAL_CALL MatchCaseToolboxController::supportsService( const OUString& ServiceName ) throw( css::uno::RuntimeException )
+{
+ const css::uno::Sequence< OUString > aSNL( getSupportedServiceNames() );
+ const OUString * pArray = aSNL.getConstArray();
+
+ for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
+ if( pArray[i] == ServiceName )
+ return true;
+
+ return false;
+}
+
+css::uno::Sequence< OUString > SAL_CALL MatchCaseToolboxController::getSupportedServiceNames() throw( css::uno::RuntimeException )
+{
+ return getSupportedServiceNames_Static();
+}
+
+css::uno::Sequence< OUString > MatchCaseToolboxController::getSupportedServiceNames_Static() throw()
+{
+ css::uno::Sequence< OUString > aSNS( 1 );
+ aSNS.getArray()[0] = OUString( "com.sun.star.frame.ToolbarController" );
+ return aSNS;
+}
+
+// XComponent
+void SAL_CALL MatchCaseToolboxController::dispose() throw ( css::uno::RuntimeException )
+{
+ SolarMutexGuard aSolarMutexGuard;
+
+ SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY), m_aCommandURL);
+
+ svt::ToolboxController::dispose();
+
+ delete m_pMatchCaseControl;
+ m_pMatchCaseControl = 0;
+}
+
+// XInitialization
+void SAL_CALL MatchCaseToolboxController::initialize( const css::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw ( css::uno::Exception, css::uno::RuntimeException)
+{
+ svt::ToolboxController::initialize(aArguments);
+
+ SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY), m_aCommandURL);
+}
+
+// XToolbarController
+void SAL_CALL MatchCaseToolboxController::execute( sal_Int16 /*KeyModifier*/ ) throw ( css::uno::RuntimeException )
+{
+}
+
+css::uno::Reference< css::awt::XWindow > SAL_CALL MatchCaseToolboxController::createItemWindow( const css::uno::Reference< css::awt::XWindow >& Parent ) throw ( css::uno::RuntimeException )
+{
+ css::uno::Reference< css::awt::XWindow > xItemWindow;
+
+ css::uno::Reference< css::awt::XWindow > xParent( Parent );
+ Window* pParent = VCLUnoHelper::GetWindow( xParent );
+ if ( pParent )
+ {
+ ToolBox* pToolbar = (ToolBox* )pParent;
+ m_pMatchCaseControl = new CheckBox( pToolbar, 0 );
+ m_pMatchCaseControl->SetText( SVX_RESSTR( RID_SVXSTR_FINDBAR_MATCHCASE ) );
+ Size aSize( m_pMatchCaseControl->GetOptimalSize() );
+ m_pMatchCaseControl->SetSizePixel( aSize );
+ }
+ xItemWindow = VCLUnoHelper::GetInterface( m_pMatchCaseControl );
+
+ return xItemWindow;
+}
+
+// XStatusListener
+void SAL_CALL MatchCaseToolboxController::statusChanged( const css::frame::FeatureStateEvent& rEvent ) throw ( css::uno::RuntimeException )
+{
+ (void) rEvent;
+ SolarMutexGuard aSolarMutexGuard;
+ if ( m_bDisposed )
+ return;
+}
+
//-----------------------------------------------------------------------------------------------------------
// class ExitSearchToolboxController
@@ -899,6 +1021,13 @@ css::uno::Reference< css::uno::XInterface > SAL_CALL UpSearchToolboxController_c
comphelper::getComponentContext(rSMgr), UpDownSearchToolboxController::UP ) );
}
+css::uno::Reference< css::uno::XInterface > SAL_CALL MatchCaseToolboxController_createInstance(
+ const css::uno::Reference< css::lang::XMultiServiceFactory >& rSMgr )
+{
+ return static_cast< cppu::OWeakObject * >(
+ new MatchCaseToolboxController( comphelper::getComponentContext(rSMgr) ) );
+}
+
css::uno::Reference< css::uno::XInterface > SAL_CALL ExitFindbarToolboxController_createInstance(
const css::uno::Reference< css::lang::XMultiServiceFactory >& rSMgr )
{