summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Timofeev <timofeev.i.s@gmail.com>2011-12-26 23:58:47 +0400
committerIvan Timofeev <timofeev.i.s@gmail.com>2011-12-27 00:32:52 +0400
commitb9f58ba85f698258cab36615947daeeba25724cd (patch)
treedefb9bcaf4081c335faa3eaf14fff70b60b64b5f
parentecbda593ef71de8eb27b19ad8e421f87f7b2adf5 (diff)
resurrect autocorrection
-rw-r--r--editeng/source/misc/svxacorr.cxx82
1 files changed, 38 insertions, 44 deletions
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 9630d0d21005..159cde6fb71f 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -1482,10 +1482,9 @@ sal_uLong SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
SvxAutoCorrectLanguageLists& SvxAutoCorrect::_GetLanguageList(
LanguageType eLang )
{
- boost::ptr_map<LanguageType, SvxAutoCorrectLanguageLists>::iterator nTmpVal = pLangTable->find(eLang);
- if(nTmpVal != pLangTable->end())
+ if(pLangTable->find(eLang) == pLangTable->end())
CreateLanguageFile(eLang, sal_True);
- return *(nTmpVal->second);
+ return *(pLangTable->find(eLang)->second);
}
void SvxAutoCorrect::SaveCplSttExceptList( LanguageType eLang )
@@ -1526,8 +1525,10 @@ sal_Bool SvxAutoCorrect::AddCplSttException( const String& rNew,
else
{
nTmpVal = pLangTable->find(LANGUAGE_DONTKNOW);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_True))
+ if(nTmpVal != pLangTable->end())
pLists = nTmpVal->second;
+ else if(CreateLanguageFile(LANGUAGE_DONTKNOW, sal_True))
+ pLists = pLangTable->find(LANGUAGE_DONTKNOW)->second;
}
OSL_ENSURE(pLists, "No auto correction data");
return pLists->AddToCplSttExceptList(rNew);
@@ -1545,8 +1546,10 @@ sal_Bool SvxAutoCorrect::AddWrtSttException( const String& rNew,
else
{
nTmpVal = pLangTable->find(LANGUAGE_DONTKNOW);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_True))
+ if(nTmpVal != pLangTable->end())
pLists = nTmpVal->second;
+ else if(CreateLanguageFile(LANGUAGE_DONTKNOW, sal_True))
+ pLists = pLangTable->find(LANGUAGE_DONTKNOW)->second;
}
OSL_ENSURE(pLists, "keine Autokorrekturdatei");
return pLists->AddToWrdSttExceptList(rNew);
@@ -1599,7 +1602,7 @@ sal_Bool SvxAutoCorrect::GetPrevAutoCorrWord( SvxAutoCorrDoc& rDoc,
sal_Bool SvxAutoCorrect::CreateLanguageFile( LanguageType eLang, sal_Bool bNewFile )
{
- OSL_ENSURE(pLangTable->find(eLang) != pLangTable->end(), "Language already exists ");
+ OSL_ENSURE(pLangTable->find(eLang) == pLangTable->end(), "Language already exists ");
String sUserDirFile( GetAutoCorrFileName( eLang, sal_True, sal_False )),
sShareDirFile( sUserDirFile );
@@ -1631,7 +1634,8 @@ sal_Bool SvxAutoCorrect::CreateLanguageFile( LanguageType eLang, sal_Bool bNewFi
pLists = new SvxAutoCorrectLanguageLists( *this, sShareDirFile,
sUserDirFile, eLang );
pLangTable->insert(eLang, pLists);
- aLastFileTable.erase(nFndPos);
+ if (nFndPos != aLastFileTable.end())
+ aLastFileTable.erase(nFndPos);
}
else if( !bNewFile )
{
@@ -1644,8 +1648,10 @@ sal_Bool SvxAutoCorrect::PutText( const String& rShort, const String& rLong,
LanguageType eLang )
{
boost::ptr_map<LanguageType, SvxAutoCorrectLanguageLists>::iterator nTmpVal = pLangTable->find(eLang);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(eLang))
+ if(nTmpVal != pLangTable->end())
return nTmpVal->second->PutText(rShort, rLong);
+ if(CreateLanguageFile(eLang))
+ return pLangTable->find(eLang)->second->PutText(rShort, rLong);
return sal_False;
}
@@ -1741,11 +1747,10 @@ const SvxAutocorrWord* SvxAutoCorrect::SearchWordsInList(
// First search for eLang, then US-English -> English
// and last in LANGUAGE_DONTKNOW
- boost::ptr_map<LanguageType, SvxAutoCorrectLanguageLists>::iterator nTmpVal = pLangTable->find(eLang);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(eLang, sal_False))
+ if(pLangTable->find(eLang) != pLangTable->end() || CreateLanguageFile(eLang, sal_False))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(eLang)->second;
pRet = lcl_SearchWordsInList( pList, rTxt, rStt, nEndPos, rDoc );
if( pRet )
{
@@ -1758,11 +1763,10 @@ const SvxAutocorrWord* SvxAutoCorrect::SearchWordsInList(
LanguageType nTmpKey1 = eLang & 0x7ff, // the main language in many cases DE
nTmpKey2 = eLang & 0x3ff; // otherwise for example EN
- nTmpVal = pLangTable->find(nTmpKey1);
- if(nTmpKey1 != eLang && (nTmpVal != pLangTable->end() || CreateLanguageFile(nTmpKey1, sal_False)))
+ if(nTmpKey1 != eLang && (pLangTable->find(nTmpKey1) != pLangTable->end() || CreateLanguageFile(nTmpKey1, sal_False)))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(nTmpKey1)->second;
pRet = lcl_SearchWordsInList( pList, rTxt, rStt, nEndPos, rDoc);
if( pRet )
{
@@ -1771,11 +1775,10 @@ const SvxAutocorrWord* SvxAutoCorrect::SearchWordsInList(
}
}
- nTmpVal = pLangTable->find(nTmpKey2);
- if(nTmpKey2 != eLang && (nTmpVal != pLangTable->end() || CreateLanguageFile(nTmpKey2, sal_False)))
+ if(nTmpKey2 != eLang && (pLangTable->find(nTmpKey2) != pLangTable->end() || CreateLanguageFile(nTmpKey2, sal_False)))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(nTmpKey2)->second;
pRet = lcl_SearchWordsInList( pList, rTxt, rStt, nEndPos, rDoc);
if( pRet )
{
@@ -1784,11 +1787,10 @@ const SvxAutocorrWord* SvxAutoCorrect::SearchWordsInList(
}
}
- nTmpVal = pLangTable->find(LANGUAGE_DONTKNOW);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_False))
+ if(pLangTable->find(LANGUAGE_DONTKNOW) != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_False))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(LANGUAGE_DONTKNOW)->second;
pRet = lcl_SearchWordsInList( pList, rTxt, rStt, nEndPos, rDoc);
if( pRet )
{
@@ -1808,40 +1810,36 @@ sal_Bool SvxAutoCorrect::FindInWrdSttExceptList( LanguageType eLang,
nTmpKey2 = eLang & 0x3ff; // otherwise for example EN
String sTemp(sWord);
- boost::ptr_map<LanguageType, SvxAutoCorrectLanguageLists>::iterator nTmpVal = pLangTable->find(eLang);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(eLang, sal_False))
+ if(pLangTable->find(eLang) != pLangTable->end() || CreateLanguageFile(eLang, sal_False))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(eLang)->second;
String _sTemp(sWord);
if(pList->GetWrdSttExceptList()->Seek_Entry(&_sTemp))
return sal_True;
}
// If it still could not be found here, then keep on searching
- nTmpVal = pLangTable->find(nTmpKey1);
- if(nTmpKey1 != eLang && (nTmpVal != pLangTable->end() || CreateLanguageFile(nTmpKey1, sal_False)))
+ if(nTmpKey1 != eLang && (pLangTable->find(nTmpKey1) != pLangTable->end() || CreateLanguageFile(nTmpKey1, sal_False)))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(nTmpKey1)->second;
if(pList->GetWrdSttExceptList()->Seek_Entry(&sTemp))
return sal_True;
}
- nTmpVal = pLangTable->find(nTmpKey2);
- if(nTmpKey2 != eLang && (nTmpVal != pLangTable->end() || CreateLanguageFile(nTmpKey2, sal_False)))
+ if(nTmpKey2 != eLang && (pLangTable->find(nTmpKey2) != pLangTable->end() || CreateLanguageFile(nTmpKey2, sal_False)))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(nTmpKey2)->second;
if(pList->GetWrdSttExceptList()->Seek_Entry(&sTemp))
return sal_True;
}
- nTmpVal = pLangTable->find(LANGUAGE_DONTKNOW);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_False))
+ if(pLangTable->find(LANGUAGE_DONTKNOW) != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_False))
{
//the language is available - so bring it on
- SvxAutoCorrectLanguageLists* pList = nTmpVal->second;
+ SvxAutoCorrectLanguageLists* pList = pLangTable->find(LANGUAGE_DONTKNOW)->second;
if(pList->GetWrdSttExceptList()->Seek_Entry(&sTemp))
return sal_True;
}
@@ -1891,38 +1889,34 @@ sal_Bool SvxAutoCorrect::FindInCplSttExceptList(LanguageType eLang,
nTmpKey2 = eLang & 0x3ff; // otherwise for example EN
String sTemp( sWord );
- boost::ptr_map<LanguageType, SvxAutoCorrectLanguageLists>::iterator nTmpVal = pLangTable->find(eLang);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(eLang, sal_False))
+ if(pLangTable->find(eLang) != pLangTable->end() || CreateLanguageFile(eLang, sal_False))
{
//the language is available - so bring it on
- const SvStringsISortDtor* pList = nTmpVal->second->GetCplSttExceptList();
+ const SvStringsISortDtor* pList = pLangTable->find(eLang)->second->GetCplSttExceptList();
if(bAbbreviation ? lcl_FindAbbreviation(pList, sWord) : pList->Seek_Entry(&sTemp))
return sal_True;
}
// If it still could not be found here, then keep on searching
- nTmpVal = pLangTable->find(nTmpKey1);
- if(nTmpKey1 != eLang && (nTmpVal != pLangTable->end() || CreateLanguageFile(nTmpKey1, sal_False)))
+ if(nTmpKey1 != eLang && (pLangTable->find(nTmpKey1) != pLangTable->end() || CreateLanguageFile(nTmpKey1, sal_False)))
{
- const SvStringsISortDtor* pList = nTmpVal->second->GetCplSttExceptList();
+ const SvStringsISortDtor* pList = pLangTable->find(nTmpKey1)->second->GetCplSttExceptList();
if(bAbbreviation ? lcl_FindAbbreviation(pList, sWord) : pList->Seek_Entry(&sTemp))
return sal_True;
}
- nTmpVal = pLangTable->find(nTmpKey2);
- if(nTmpKey2 != eLang && (nTmpVal != pLangTable->end() || CreateLanguageFile(nTmpKey2, sal_False)))
+ if(nTmpKey2 != eLang && (pLangTable->find(nTmpKey2) != pLangTable->end() || CreateLanguageFile(nTmpKey2, sal_False)))
{
//the language is available - so bring it on
- const SvStringsISortDtor* pList = nTmpVal->second->GetCplSttExceptList();
+ const SvStringsISortDtor* pList = pLangTable->find(nTmpKey2)->second->GetCplSttExceptList();
if(bAbbreviation ? lcl_FindAbbreviation(pList, sWord) : pList->Seek_Entry(&sTemp))
return sal_True;
}
- nTmpVal = pLangTable->find(LANGUAGE_DONTKNOW);
- if(nTmpVal != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_False))
+ if(pLangTable->find(LANGUAGE_DONTKNOW) != pLangTable->end() || CreateLanguageFile(LANGUAGE_DONTKNOW, sal_False))
{
//the language is available - so bring it on
- const SvStringsISortDtor* pList = nTmpVal->second->GetCplSttExceptList();
+ const SvStringsISortDtor* pList = pLangTable->find(LANGUAGE_DONTKNOW)->second->GetCplSttExceptList();
if(bAbbreviation ? lcl_FindAbbreviation(pList, sWord) : pList->Seek_Entry(&sTemp))
return sal_True;
}