summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRelease Engineers <releng@openoffice.org>2009-07-03 07:59:31 +0000
committerRelease Engineers <releng@openoffice.org>2009-07-03 07:59:31 +0000
commitd9d20ee720215865495ea636b0d12cf76115b8cc (patch)
treeb3d139d7415cbcec5c26a2a9494df112b0a32373
parent7297fe562fc2d0f42f5481e77bddcec8f7ca69dd (diff)
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
-rw-r--r--framework/inc/helper/mischelper.hxx61
-rw-r--r--framework/inc/uielement/langselectionmenucontroller.hxx4
-rw-r--r--framework/inc/uielement/langselectionstatusbarcontroller.hxx4
-rw-r--r--framework/source/helper/makefile.mk3
-rw-r--r--framework/source/helper/mischelper.cxx71
-rw-r--r--framework/source/uielement/langselectionmenucontroller.cxx36
-rw-r--r--framework/source/uielement/langselectionstatusbarcontroller.cxx36
-rw-r--r--framework/util/makefile.mk1
8 files changed, 163 insertions, 53 deletions
diff --git a/framework/inc/helper/mischelper.hxx b/framework/inc/helper/mischelper.hxx
new file mode 100644
index 0000000000..1d9df9caa4
--- /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
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef __MISC_HELPER_HXX_
+#define __MISC_HELPER_HXX_
+
+#include <com/sun/star/linguistic2/XLanguageGuessing.hpp>
+
+#include <i18npool/lang.h>
+#include <svtools/languageoptions.hxx>
+
+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 9e3449cc33..505706d489 100644
--- a/framework/inc/uielement/langselectionmenucontroller.hxx
+++ b/framework/inc/uielement/langselectionmenucontroller.hxx
@@ -58,6 +58,8 @@
#include <cppuhelper/weak.hxx>
#include <rtl/ustring.hxx>
+#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 59b993f966..9cba647195 100644
--- a/framework/inc/uielement/langselectionstatusbarcontroller.hxx
+++ b/framework/inc/uielement/langselectionstatusbarcontroller.hxx
@@ -39,6 +39,8 @@
#include <com/sun/star/linguistic2/XLanguageGuessing.hpp>
#include <svtools/statusbarcontroller.hxx>
+#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 29db41747e..7a2fc18168 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 0000000000..395d592592
--- /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
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_framework.hxx"
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+#include <tools/debug.hxx>
+#include <comphelper/processfactory.hxx>
+#include <helper/mischelper.hxx>
+
+
+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 ca11f7a208..a18839ea03 100644
--- a/framework/source/uielement/langselectionmenucontroller.cxx
+++ b/framework/source/uielement/langselectionmenucontroller.cxx
@@ -79,6 +79,8 @@
#endif
#include <dispatch/uieventloghelper.hxx>
+#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 041e92f986..b49f9bf16c 100644
--- a/framework/source/uielement/langselectionstatusbarcontroller.cxx
+++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx
@@ -75,6 +75,8 @@
#include <com/sun/star/linguistic2/XLanguageGuessing.hpp>
#include <dispatch/uieventloghelper.hxx>
+#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 cb788809b0..94409ace99 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 \