From d81bc12a6715a94905a4f0e034c241977d120065 Mon Sep 17 00:00:00 2001 From: Release Engineers Date: Fri, 3 Jul 2009 07:59:31 +0000 Subject: CWS-TOOLING: integrate CWS fwk108 2009-05-27 09:53:38 +0200 cd r272332 : CWS-TOOLING: rebase CWS fwk108 to trunk@272291 (milestone: DEV300:m49) 2009-05-26 15:31:26 +0200 cd r272307 : CWS-TOOLING: rebase CWS fwk108 to trunk@271830 (milestone: DEV300:m48) 2009-04-08 12:56:05 +0200 cd r270636 : #i100910# Check for exact type for SfxVoidItem 2009-04-03 16:18:17 +0200 tl r270499 : #i100828# avoid loading library for language guessing at start-up --- framework/inc/helper/mischelper.hxx | 61 +++++++++++++++++++ .../inc/uielement/langselectionmenucontroller.hxx | 4 +- .../uielement/langselectionstatusbarcontroller.hxx | 4 +- framework/source/helper/makefile.mk | 3 +- framework/source/helper/mischelper.cxx | 71 ++++++++++++++++++++++ .../uielement/langselectionmenucontroller.cxx | 36 ++++------- .../uielement/langselectionstatusbarcontroller.cxx | 36 ++++------- framework/util/makefile.mk | 1 + 8 files changed, 163 insertions(+), 53 deletions(-) create mode 100644 framework/inc/helper/mischelper.hxx create mode 100644 framework/source/helper/mischelper.cxx (limited to 'framework') diff --git a/framework/inc/helper/mischelper.hxx b/framework/inc/helper/mischelper.hxx new file mode 100644 index 000000000000..1d9df9caa4ff --- /dev/null +++ b/framework/inc/helper/mischelper.hxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: acceleratorinfo.hxx,v $ + * $Revision: 1.6 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __MISC_HELPER_HXX_ +#define __MISC_HELPER_HXX_ + +#include + +#include +#include + +namespace framework +{ + +inline bool IsScriptTypeMatchingToLanguage( sal_Int16 nScriptType, LanguageType nLang ) +{ + return 0 != (nScriptType & SvtLanguageOptions::GetScriptTypeOfLanguage( nLang )); +} + + +class LanguageGuessingHelper +{ + mutable ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XLanguageGuessing > m_xLanguageGuesser; + +public: + LanguageGuessingHelper() {} + + ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XLanguageGuessing > GetGuesser() const; +}; + +} // namespace framework + +#endif // __MISC_HELPER_HXX_ + diff --git a/framework/inc/uielement/langselectionmenucontroller.hxx b/framework/inc/uielement/langselectionmenucontroller.hxx index 724b75eba3d8..f9cec2dfb814 100644 --- a/framework/inc/uielement/langselectionmenucontroller.hxx +++ b/framework/inc/uielement/langselectionmenucontroller.hxx @@ -58,6 +58,8 @@ #include #include +#include "helper/mischelper.hxx" + namespace framework { class LanguageSelectionMenuController : public PopupMenuControllerBase @@ -97,7 +99,6 @@ namespace framework }; sal_Bool m_bShowMenu; - ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XLanguageGuessing > m_xLanguageGuesser; ::rtl::OUString m_aLangStatusCommandURL; ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > m_xLanguageDispatch; ::rtl::OUString m_aMenuCommandURL_Lang; @@ -111,6 +112,7 @@ namespace framework sal_Int16 m_nScriptType; ::rtl::OUString m_aKeyboardLang; ::rtl::OUString m_aGuessedText; + LanguageGuessingHelper m_aLangGuessHelper; void fillPopupMenu( com::sun::star::uno::Reference< com::sun::star::awt::XPopupMenu >& rPopupMenu, const Mode rMode ); }; diff --git a/framework/inc/uielement/langselectionstatusbarcontroller.hxx b/framework/inc/uielement/langselectionstatusbarcontroller.hxx index b2f1a9306ea3..4e886f89adfb 100644 --- a/framework/inc/uielement/langselectionstatusbarcontroller.hxx +++ b/framework/inc/uielement/langselectionstatusbarcontroller.hxx @@ -39,6 +39,8 @@ #include #include +#include "helper/mischelper.hxx" + // component helper namespace namespace framework { @@ -92,7 +94,7 @@ class LangSelectionStatusbarController : public svt::StatusbarController ::rtl::OUString m_aCurLang; ::rtl::OUString m_aKeyboardLang; ::rtl::OUString m_aGuessedText; - ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XLanguageGuessing > m_xLanguageGuesser; + LanguageGuessingHelper m_aLangGuessHelper; void LangMenu() throw (::com::sun::star::uno::RuntimeException); }; diff --git a/framework/source/helper/makefile.mk b/framework/source/helper/makefile.mk index 29db41747e83..7a2fc1816869 100644 --- a/framework/source/helper/makefile.mk +++ b/framework/source/helper/makefile.mk @@ -66,7 +66,8 @@ SLOFILES= $(SLO)$/ocomponentaccess.obj \ $(SLO)$/configimporter.obj \ $(SLO)$/tagwindowasmodified.obj \ $(SLO)$/titlebarupdate.obj \ - $(SLO)$/titlehelper.obj + $(SLO)$/titlehelper.obj \ + $(SLO)$/mischelper.obj # --- Targets ------------------------------------------------------ diff --git a/framework/source/helper/mischelper.cxx b/framework/source/helper/mischelper.cxx new file mode 100644 index 000000000000..395d59259286 --- /dev/null +++ b/framework/source/helper/mischelper.cxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: langselectionstatusbarcontroller.cxx,v $ + * $Revision: 1.6.40.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +#include + +#include +#include +#include + + +using namespace ::com::sun::star; + +namespace framework +{ + +uno::Reference< linguistic2::XLanguageGuessing > LanguageGuessingHelper::GetGuesser() const +{ + if (!m_xLanguageGuesser.is()) + { + try + { + uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() ); + if (xMgr.is()) + { + m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >( + xMgr->createInstance( + rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ), + uno::UNO_QUERY ); + } + } + catch (uno::Exception &r) + { + (void) r; + DBG_ASSERT( 0, "failed to get language guessing component" ); + } + } + return m_xLanguageGuesser; +} + +} // namespace framework + diff --git a/framework/source/uielement/langselectionmenucontroller.cxx b/framework/source/uielement/langselectionmenucontroller.cxx index e7d3fad09ac1..84323b3bb7ef 100644 --- a/framework/source/uielement/langselectionmenucontroller.cxx +++ b/framework/source/uielement/langselectionmenucontroller.cxx @@ -79,6 +79,8 @@ #endif #include +#include "helper/mischelper.hxx" + //_________________________________________________________________________________________________________________ // Defines //_________________________________________________________________________________________________________________ @@ -106,17 +108,6 @@ LanguageSelectionMenuController::LanguageSelectionMenuController( const ::com::s PopupMenuControllerBase( xServiceManager ), m_bShowMenu( sal_True ) { - if (!m_xLanguageGuesser.is()) - { - uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() ); - if (xMgr.is()) - { - m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >( - xMgr->createInstance( - rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ), - uno::UNO_QUERY ); - } - } } LanguageSelectionMenuController::~LanguageSelectionMenuController() @@ -301,12 +292,6 @@ void SAL_CALL LanguageSelectionMenuController::setPopupMenu( const Reference< cs } } -//match ScriptType -bool lcl_checkScriptType(sal_Int16 nScriptType,LanguageType nLang) -{ - return 0 != (nScriptType & SvtLanguageOptions::GetScriptTypeOfLanguage( nLang )); -} - void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopupMenu , const Mode eMode ) { VCLXPopupMenu* pVCLPopupMenu = (VCLXPopupMenu *)VCLXMenu::GetImplementation( rPopupMenu ); @@ -358,7 +343,7 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup LanguageType rSystemLanguage = rAllSettings.GetLanguage(); if(rSystemLanguage!=LANGUAGE_DONTKNOW) { - if (lcl_checkScriptType(m_nScriptType,rSystemLanguage )) + if (IsScriptTypeMatchingToLanguage(m_nScriptType,rSystemLanguage )) LangItems[::rtl::OUString(aLangTable.GetString(rSystemLanguage))]=::rtl::OUString(aLangTable.GetString(rSystemLanguage)); } @@ -366,24 +351,25 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup LanguageType rUILanguage = rAllSettings.GetUILanguage(); if(rUILanguage!=LANGUAGE_DONTKNOW) { - if (lcl_checkScriptType(m_nScriptType, rUILanguage )) + if (IsScriptTypeMatchingToLanguage(m_nScriptType, rUILanguage )) LangItems[::rtl::OUString(aLangTable.GetString(rUILanguage))]=::rtl::OUString(aLangTable.GetString(rUILanguage)); } //4--guessed language - if (m_xLanguageGuesser.is() && m_aGuessedText.getLength() > 0) + uno::Reference< linguistic2::XLanguageGuessing > xLangGuesser( m_aLangGuessHelper.GetGuesser() ); + if (xLangGuesser.is() && m_aGuessedText.getLength() > 0) { - ::com::sun::star::lang::Locale aLocale(m_xLanguageGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); + ::com::sun::star::lang::Locale aLocale(xLangGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); LanguageType nLang = MsLangId::convertLocaleToLanguageWithFallback( aLocale ); - if ((nLang != LANGUAGE_DONTKNOW) && (nLang != LANGUAGE_NONE) && (nLang != LANGUAGE_SYSTEM) - && (lcl_checkScriptType( m_nScriptType, nLang ))) + if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_NONE && nLang != LANGUAGE_SYSTEM + && IsScriptTypeMatchingToLanguage( m_nScriptType, nLang )) LangItems[aLangTable.GetString(nLang)]=aLangTable.GetString(nLang); } //5--keyboard language if(m_aKeyboardLang!=::rtl::OUString::createFromAscii("")) { - if (lcl_checkScriptType(m_nScriptType, aLanguageTable.GetType(m_aKeyboardLang))) + if (IsScriptTypeMatchingToLanguage(m_nScriptType, aLanguageTable.GetType(m_aKeyboardLang))) LangItems[m_aKeyboardLang] = m_aKeyboardLang; } @@ -417,7 +403,7 @@ void LanguageSelectionMenuController::fillPopupMenu( Reference< css::awt::XPopup if (LangItems.size()==7) break; const Locale& rLocale=rLocales[i]; - if(lcl_checkScriptType(m_nScriptType, aLanguageTable.GetType(rLocale.Language))) + if(IsScriptTypeMatchingToLanguage(m_nScriptType, aLanguageTable.GetType(rLocale.Language))) LangItems[::rtl::OUString(rLocale.Language)]=::rtl::OUString(rLocale.Language); } } diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx index 63bd51d27525..6eee84328315 100644 --- a/framework/source/uielement/langselectionstatusbarcontroller.cxx +++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx @@ -75,6 +75,8 @@ #include #include +#include "helper/mischelper.hxx" + using namespace ::cppu; using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -99,17 +101,6 @@ LangSelectionStatusbarController::LangSelectionStatusbarController( const uno::R m_bShowMenu( sal_True ), m_nScriptType( 7 ) { - if (!m_xLanguageGuesser.is()) - { - uno::Reference< lang::XMultiServiceFactory > xMgr ( comphelper::getProcessServiceFactory() ); - if (xMgr.is()) - { - m_xLanguageGuesser = uno::Reference< linguistic2::XLanguageGuessing >( - xMgr->createInstance( - rtl::OUString::createFromAscii( "com.sun.star.linguistic2.LanguageGuessing" ) ), - uno::UNO_QUERY ); - } - } } // XInterface @@ -183,12 +174,6 @@ throw (::com::sun::star::uno::RuntimeException) return sal_False; } -//match ScriptType -bool checkScriptType( sal_Int16 nScriptType, LanguageType nLang ) -{ - return 0 != ( nScriptType & SvtLanguageOptions::GetScriptTypeOfLanguage( nLang )); -} - void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::RuntimeException) { if (!m_bShowMenu) @@ -215,7 +200,7 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R LanguageType rSystemLanguage = rAllSettings.GetLanguage(); if( rSystemLanguage != LANGUAGE_DONTKNOW ) { - if ( checkScriptType( m_nScriptType, rSystemLanguage )) + if ( IsScriptTypeMatchingToLanguage( m_nScriptType, rSystemLanguage )) LangItems.insert( ::rtl::OUString( aLangTable.GetString( rSystemLanguage )) ); } @@ -223,24 +208,25 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R LanguageType rUILanguage = rAllSettings.GetUILanguage(); if( rUILanguage != LANGUAGE_DONTKNOW ) { - if ( checkScriptType( m_nScriptType, rUILanguage )) + if ( IsScriptTypeMatchingToLanguage( m_nScriptType, rUILanguage )) LangItems.insert( ::rtl::OUString( aLangTable.GetString( rUILanguage )) ); } //4--guessed language - if ( m_xLanguageGuesser.is() && m_aGuessedText.getLength() > 0) + uno::Reference< linguistic2::XLanguageGuessing > xLangGuesser( m_aLangGuessHelper.GetGuesser() ); + if ( xLangGuesser.is() && m_aGuessedText.getLength() > 0) { - ::com::sun::star::lang::Locale aLocale(m_xLanguageGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); + ::com::sun::star::lang::Locale aLocale(xLangGuesser->guessPrimaryLanguage( m_aGuessedText, 0, m_aGuessedText.getLength()) ); LanguageType nLang = MsLangId::convertLocaleToLanguageWithFallback( aLocale ); - if (( nLang != LANGUAGE_DONTKNOW ) && ( nLang != LANGUAGE_NONE ) && (nLang != LANGUAGE_SYSTEM) - && ( checkScriptType( m_nScriptType, nLang ))) + if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_NONE && nLang != LANGUAGE_SYSTEM + && IsScriptTypeMatchingToLanguage( m_nScriptType, nLang )) LangItems.insert( aLangTable.GetString( nLang )); } //5--keyboard language if( m_aKeyboardLang != ::rtl::OUString::createFromAscii( "" )) { - if ( checkScriptType( m_nScriptType, aLanguageTable.GetType( m_aKeyboardLang ))) + if ( IsScriptTypeMatchingToLanguage( m_nScriptType, aLanguageTable.GetType( m_aKeyboardLang ))) LangItems.insert( m_aKeyboardLang ); } @@ -274,7 +260,7 @@ void LangSelectionStatusbarController::LangMenu()throw (::com::sun::star::uno::R if ( LangItems.size() == 7 ) break; const Locale& rLocale=rLocales[i]; - if( checkScriptType( m_nScriptType, aLangTable.GetType( rLocale.Language ))) + if( IsScriptTypeMatchingToLanguage( m_nScriptType, aLangTable.GetType( rLocale.Language ))) LangItems.insert( ::rtl::OUString( rLocale.Language ) ); } } diff --git a/framework/util/makefile.mk b/framework/util/makefile.mk index cb788809b0d9..94409ace992e 100644 --- a/framework/util/makefile.mk +++ b/framework/util/makefile.mk @@ -272,6 +272,7 @@ SHL4OBJS= \ $(SLO)$/menubarwrapper.obj \ $(SLO)$/menudispatcher.obj \ $(SLO)$/menumanager.obj \ + $(SLO)$/mischelper.obj \ $(SLO)$/moduleacceleratorconfiguration.obj \ $(SLO)$/moduleimagemanager.obj \ $(SLO)$/modulemanager.obj \ -- cgit