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 )


Reply via email to