Author: hdu
Date: Mon May 7 14:43:29 2012
New Revision: 1335043
URL: http://svn.apache.org/viewvc?rev=1335043&view=rev
Log:
#i22961# enhance letter-case aware auto-completion for month/day names
Modified:
incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx
Modified: incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx?rev=1335043&r1=1335042&r2=1335043&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx (original)
+++ incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx Mon May 7 14:43:29
2012
@@ -5636,10 +5636,15 @@ void QuickHelpData::Stop( SwWrtShell& rS
ClearCntnt();
}
-
-
void QuickHelpData::FillStrArr( SwWrtShell& rSh, const String& rWord )
{
+ // #i22961# get the letter-case context
+ const CharClass& rCharClass = GetAppCharClass();
+ const String aLWord = rCharClass.toLower( rWord, 0, rWord.Len() );
+ const bool bIsUpper = (rWord == rCharClass.toUpper( rWord, 0, rWord.Len()
) );
+ const bool bIsLower = (rWord == aLWord);
+
+ // add all matching month/day names from the calendar
salhelper::SingletonRef<SwCalendarWrapper>* pCalendar =
s_getCalendarWrapper();
(*pCalendar)->LoadDefaultCalendar( rSh.GetCurLang() );
@@ -5650,19 +5655,16 @@ void QuickHelpData::FillStrArr( SwWrtShe
{
for( long nPos = 0, nEnd = aNames.getLength(); nPos < nEnd; ++nPos
)
{
- String sStr( aNames[ nPos ].FullName );
- if( rWord.Len() + 1 < sStr.Len() &&
-
-//!!! TODO: use i18n-sensitive compare if it becomes available
-// pIntl->CompareEqual( rWord, sStr.Copy( 0, rWord.Len() ),
-// INTN_COMPARE_IGNORECASE ) )
- COMPARE_EQUAL == rWord.CompareIgnoreCaseToAscii(
- sStr, rWord.Len() ))
- {
- String* pNew = new String( sStr );
- if( !aArr.Insert( pNew ) )
- delete pNew;
- }
+ const String& rS = aNames[ nPos ].FullName;
+ if( rS.Len() <= rWord.Len() + 1 )
+ continue;
+ const String aLName = rCharClass.toLower( rS, 0, rWord.Len() );
+ if( aLName != aLWord )
+ continue;
+ // #i22961# provide case-sensitive autocompletion suggestions
+ String* pNew = new String( (bIsUpper==bIsLower) ? rS :
(bIsUpper ? rCharClass.toUpper(rS,0,rS.Len()) :
rCharClass.toLower(rS,0,rS.Len())) );
+ if( !aArr.Insert( pNew ) )
+ delete pNew;
}
if( !n ) // get data for the second loop
aNames = (*pCalendar)->getDays();
@@ -5674,10 +5676,6 @@ void QuickHelpData::FillStrArr( SwWrtShe
sal_uInt16 nStt, nEnd;
if( rACLst.GetRange( rWord, nStt, nEnd ) )
{
- // #i22961# guess letter case-context for autocompletion
- const CharClass& rCharClass = GetAppCharClass();
- const bool bIsUpper = (rWord == rCharClass.toUpper( rWord, 0,
rWord.Len() ) );
- const bool bIsLower = (rWord == rCharClass.toLower( rWord, 0,
rWord.Len() ) );
for(; nStt < nEnd; ++nStt )
{
const String& rS = rACLst[ nStt ];
@@ -5690,9 +5688,7 @@ void QuickHelpData::FillStrArr( SwWrtShe
}
}
}
-/* -----------------06.11.2002 12:01-----------------
- *
- * --------------------------------------------------*/
+
void SwEditWin::ShowAutoTextCorrectQuickHelp(
const String& rWord, SvxAutoCorrCfg* pACfg, SvxAutoCorrect* pACorr,
sal_Bool bFromIME )