summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2017-11-27 16:39:32 -0400
committerHenry Castro <hcastro@collabora.com>2017-11-28 12:58:06 +0100
commit6db709ba79fec6f75dd7385ce57c65a62fc2254e (patch)
tree42b10fd349737a4201755b8574757e681c5419f5
parentd3440e0ebfa68ac8d2cbec9b44d0fc491162ee0e (diff)
sc, sd: rework UI Text Language "More" button, tdf#113911
Calc and Impress handle different uno command to set language Change-Id: Ic0ffef6a8fee5078b29873934001819a384c8f3a Reviewed-on: https://gerrit.libreoffice.org/45366 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Henry Castro <hcastro@collabora.com>
-rw-r--r--framework/inc/helper/mischelper.hxx3
-rw-r--r--framework/source/uielement/langselectionstatusbarcontroller.cxx103
2 files changed, 78 insertions, 28 deletions
diff --git a/framework/inc/helper/mischelper.hxx b/framework/inc/helper/mischelper.hxx
index 47043b5a06bb..bbbc39869ebe 100644
--- a/framework/inc/helper/mischelper.hxx
+++ b/framework/inc/helper/mischelper.hxx
@@ -58,6 +58,9 @@ enum LangMenuIDs
MID_LANG_SEL_NONE,
MID_LANG_SEL_RESET,
MID_LANG_SEL_MORE,
+ MID_LANG_DEF_NONE,
+ MID_LANG_DEF_RESET,
+ MID_LANG_DEF_MORE,
MID_LANG_PARA_SEPARATOR,
MID_LANG_PARA_STRING,
diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx
index 12321574436b..1cc23a8c1006 100644
--- a/framework/source/uielement/langselectionstatusbarcontroller.cxx
+++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx
@@ -128,6 +128,7 @@ void LangSelectionStatusbarController::LangMenu(
if (!m_bShowMenu)
return;
+ const Reference<XModuleManager> xModuleManager = ModuleManager::create( m_xContext );
//add context menu
Reference< awt::XPopupMenu > xPopupMenu( awt::PopupMenu::create( m_xContext ) );
//sub menu that contains all items except the last two items: Separator + Set Language for Paragraph
@@ -164,36 +165,65 @@ void LangSelectionStatusbarController::LangMenu(
}
}
- xPopupMenu->insertItem( MID_LANG_SEL_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_SEL_NONE );
- if ( sNone == m_aCurLang )
- xPopupMenu->checkItem( MID_LANG_SEL_NONE, true );
- xPopupMenu->insertItem( MID_LANG_SEL_RESET, FwkResId(STR_RESET_TO_DEFAULT_LANGUAGE), 0, MID_LANG_SEL_RESET );
- xPopupMenu->insertItem( MID_LANG_SEL_MORE, FwkResId(STR_LANGSTATUS_MORE), 0, MID_LANG_SEL_MORE );
- // add entries to submenu ('set language for paragraph')
- nItemId = static_cast< sal_Int16 >(MID_LANG_PARA_1);
- for (it = aLangItems.begin(); it != aLangItems.end(); ++it)
+ if (xModuleManager->identify(m_xFrame) == "com.sun.star.text.TextDocument")
{
- const OUString & rStr( *it );
- if( rStr != sNone &&
- rStr != sAsterisk &&
- !rStr.isEmpty()) // 'no language found' from language guessing
+ xPopupMenu->insertItem( MID_LANG_SEL_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_SEL_NONE );
+ if ( sNone == m_aCurLang )
+ xPopupMenu->checkItem( MID_LANG_SEL_NONE, true );
+ xPopupMenu->insertItem( MID_LANG_SEL_RESET, FwkResId(STR_RESET_TO_DEFAULT_LANGUAGE), 0, MID_LANG_SEL_RESET );
+ xPopupMenu->insertItem( MID_LANG_SEL_MORE, FwkResId(STR_LANGSTATUS_MORE), 0, MID_LANG_SEL_MORE );
+
+ // add entries to submenu ('set language for paragraph')
+ nItemId = static_cast< sal_Int16 >(MID_LANG_PARA_1);
+ for (it = aLangItems.begin(); it != aLangItems.end(); ++it)
{
- SAL_WARN_IF( MID_LANG_PARA_1 > nItemId || nItemId > MID_LANG_PARA_9,
- "fwk.uielement", "nItemId outside of expected range!" );
- subPopupMenu->insertItem( nItemId, rStr, 0, nItemId );
- aLangMap[nItemId] = rStr;
- ++nItemId;
+ const OUString & rStr( *it );
+ if( rStr != sNone &&
+ rStr != sAsterisk &&
+ !rStr.isEmpty()) // 'no language found' from language guessing
+ {
+ SAL_WARN_IF( MID_LANG_PARA_1 > nItemId || nItemId > MID_LANG_PARA_9,
+ "fwk.uielement", "nItemId outside of expected range!" );
+ subPopupMenu->insertItem( nItemId, rStr, 0, nItemId );
+ aLangMap[nItemId] = rStr;
+ ++nItemId;
+ }
}
- }
- subPopupMenu->insertItem( MID_LANG_PARA_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_PARA_NONE );
- subPopupMenu->insertItem( MID_LANG_PARA_RESET, FwkResId(STR_RESET_TO_DEFAULT_LANGUAGE), 0, MID_LANG_PARA_RESET );
- subPopupMenu->insertItem( MID_LANG_PARA_MORE, FwkResId(STR_LANGSTATUS_MORE), 0, MID_LANG_PARA_MORE );
- // add last two entries to main menu
- xPopupMenu->insertSeparator( MID_LANG_PARA_SEPARATOR );
- xPopupMenu->insertItem( MID_LANG_PARA_STRING, FwkResId(STR_SET_LANGUAGE_FOR_PARAGRAPH), 0, MID_LANG_PARA_STRING );
- xPopupMenu->setPopupMenu( MID_LANG_PARA_STRING, subPopupMenu );
+ // add entries to submenu ('set language for paragraph')
+ nItemId = static_cast< sal_Int16 >(MID_LANG_PARA_1);
+ for (it = aLangItems.begin(); it != aLangItems.end(); ++it)
+ {
+ const OUString & rStr( *it );
+ if( rStr != sNone &&
+ rStr != sAsterisk &&
+ !rStr.isEmpty()) // 'no language found' from language guessing
+ {
+ SAL_WARN_IF( MID_LANG_PARA_1 > nItemId || nItemId > MID_LANG_PARA_9,
+ "fwk.uielement", "nItemId outside of expected range!" );
+ subPopupMenu->insertItem( nItemId, rStr, 0, nItemId );
+ aLangMap[nItemId] = rStr;
+ ++nItemId;
+ }
+ }
+ subPopupMenu->insertItem( MID_LANG_PARA_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_PARA_NONE );
+ subPopupMenu->insertItem( MID_LANG_PARA_RESET, FwkResId(STR_RESET_TO_DEFAULT_LANGUAGE), 0, MID_LANG_PARA_RESET );
+ subPopupMenu->insertItem( MID_LANG_PARA_MORE, FwkResId(STR_LANGSTATUS_MORE), 0, MID_LANG_PARA_MORE );
+
+ // add last two entries to main menu
+ xPopupMenu->insertSeparator( MID_LANG_PARA_SEPARATOR );
+ xPopupMenu->insertItem( MID_LANG_PARA_STRING, FwkResId(STR_SET_LANGUAGE_FOR_PARAGRAPH), 0, MID_LANG_PARA_STRING );
+ xPopupMenu->setPopupMenu( MID_LANG_PARA_STRING, subPopupMenu );
+ }
+ else
+ {
+ xPopupMenu->insertItem( MID_LANG_DEF_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_DEF_NONE );
+ if ( sNone == m_aCurLang )
+ xPopupMenu->checkItem( MID_LANG_DEF_NONE, true );
+ xPopupMenu->insertItem( MID_LANG_DEF_RESET, FwkResId(STR_RESET_TO_DEFAULT_LANGUAGE), 0, MID_LANG_DEF_RESET );
+ xPopupMenu->insertItem( MID_LANG_DEF_MORE, FwkResId(STR_LANGSTATUS_MORE), 0, MID_LANG_DEF_MORE );
+ }
// now display the popup menu and execute every command ...
@@ -209,7 +239,10 @@ void LangSelectionStatusbarController::LangMenu(
if (MID_LANG_SEL_1 <= nId && nId <= MID_LANG_SEL_9)
{
- aBuff.append( ".uno:LanguageStatus?Language:string=Current_" );
+ if ( xModuleManager->identify(m_xFrame) == "com.sun.star.text.TextDocument" )
+ aBuff.append( ".uno:LanguageStatus?Language:string=Current_" );
+ else
+ aBuff.append( ".uno:LanguageStatus?Language:string=Default_" );
aBuff.append( aSelectedLang );
}
else if (nId == MID_LANG_SEL_NONE)
@@ -227,6 +260,18 @@ void LangSelectionStatusbarController::LangMenu(
//open the dialog "format/character" for current selection
aBuff.append( ".uno:FontDialog?Page:string=font" );
}
+ else if (nId == MID_LANG_DEF_NONE)
+ {
+ aBuff.append( ".uno:LanguageStatus?Language:string=Default_LANGUAGE_NONE" );
+ }
+ else if (nId == MID_LANG_DEF_RESET)
+ {
+ aBuff.append( ".uno:LanguageStatus?Language:string=Default_RESET_LANGUAGES" );
+ }
+ else if (nId == MID_LANG_DEF_MORE)
+ {
+ aBuff.append( ".uno:LanguageStatus?Language:string=*" );
+ }
else if (MID_LANG_PARA_1 <= nId && nId <= MID_LANG_PARA_9)
{
aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_" );
@@ -286,8 +331,7 @@ void SAL_CALL LangSelectionStatusbarController::statusChanged( const FeatureStat
if ( m_bDisposed )
return;
- const Reference<XModuleManager> xModuleManager = ModuleManager::create( m_xContext );
- m_bShowMenu = xModuleManager->identify(m_xFrame) == "com.sun.star.text.TextDocument";
+ m_bShowMenu = true;
m_nScriptType = SvtScriptType::LATIN | SvtScriptType::ASIAN | SvtScriptType::COMPLEX; //set the default value
if ( m_xStatusbarItem.is() )
@@ -296,7 +340,10 @@ void SAL_CALL LangSelectionStatusbarController::statusChanged( const FeatureStat
Sequence< OUString > aSeq;
if ( Event.State >>= aStrValue )
+ {
m_xStatusbarItem->setText( aStrValue );
+ m_aCurLang = aStrValue;
+ }
else if ( Event.State >>= aSeq )
{
if ( aSeq.getLength() == 4 )