131 lines
3.8 KiB
C++
131 lines
3.8 KiB
C++
// =================================================================================
|
|
// MultLang.cpp
|
|
// Multilanguage support for OE.
|
|
// Created at 10/12/98 by YST
|
|
// Copyright (c)1993-1998 Microsoft Corporation, All Rights Reserved
|
|
// =================================================================================
|
|
#include "pch.hxx"
|
|
#include "multlang.h"
|
|
#include "fonts.h"
|
|
#include "shared.h"
|
|
#include "mimeutil.h"
|
|
|
|
void GetMimeCharsetForTitle(HCHARSET hCharset, LPINT pnIdm, LPTSTR lpszString, int nSize, BOOL fReadNote)
|
|
{
|
|
UINT uiCodePage = 0 ;
|
|
INETCSETINFO CsetInfo ;
|
|
int i =0;
|
|
|
|
if (lpszString)
|
|
lpszString[0] = '\0';
|
|
if ( hCharset == NULL )
|
|
return ;
|
|
|
|
// get CodePage from HCHARSET
|
|
MimeOleGetCharsetInfo(hCharset,&CsetInfo);
|
|
uiCodePage = CsetInfo.cpiInternet ;
|
|
|
|
// bug # 45377 - message language title
|
|
for(i = 0; OENonStdCPs[i].Codepage != 0; i++)
|
|
{
|
|
if(OENonStdCPs[i].Codepage == uiCodePage)
|
|
{
|
|
if(OENonStdCPs[i].cpReadTitle)
|
|
uiCodePage = OENonStdCPs[i].cpReadTitle;
|
|
break;
|
|
}
|
|
}
|
|
|
|
_GetMimeCharsetLangString(FALSE, GetMapCP(uiCodePage, fReadNote), pnIdm, lpszString, nSize);
|
|
|
|
return ;
|
|
}
|
|
|
|
BOOL fCheckEncodeMenu(UINT uiCodePage, BOOL fReadNote)
|
|
{
|
|
BOOL fReturn = TRUE;
|
|
int i =0;
|
|
BOOL fUseSIO = SUCCEEDED(g_lpIFontCache->GetJP_ISOControl(&fUseSIO));
|
|
|
|
for(i = 0; OENonStdCPs[i].Codepage != 0; i++)
|
|
{
|
|
if(OENonStdCPs[i].Codepage == uiCodePage)
|
|
{
|
|
if(fReadNote)
|
|
{
|
|
if(!OENonStdCPs[i].cpReadMenu)
|
|
return(FALSE);
|
|
else if(OENonStdCPs[i].UseSIO)
|
|
{
|
|
if((OENonStdCPs[i].UseSIO == 1) && fUseSIO)
|
|
return(FALSE);
|
|
if((OENonStdCPs[i].UseSIO == 2) && !fUseSIO)
|
|
return(FALSE);
|
|
}
|
|
}
|
|
else // Send note
|
|
{
|
|
if(!OENonStdCPs[i].cpSendMenu)
|
|
return(FALSE);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
return(fReturn);
|
|
}
|
|
|
|
// Map one code page to another
|
|
UINT GetMapCP(UINT uiCodePage, BOOL fReadNote)
|
|
{
|
|
int i =0;
|
|
INETCSETINFO CsetInfo ;
|
|
|
|
for(i = 0; OENonStdCPs[i].Codepage != 0; i++)
|
|
{
|
|
if(OENonStdCPs[i].Codepage == uiCodePage)
|
|
{
|
|
if(fReadNote)
|
|
{
|
|
if(OENonStdCPs[i].cpRead)
|
|
return(OENonStdCPs[i].cpRead);
|
|
else
|
|
{
|
|
HCHARSET hCharset = NULL;
|
|
|
|
if(SUCCEEDED(HGetDefaultCharset(&hCharset)) && SUCCEEDED(MimeOleGetCharsetInfo(hCharset, &CsetInfo)))
|
|
return(CsetInfo.cpiInternet);
|
|
}
|
|
}
|
|
else // Send note
|
|
{
|
|
if(OENonStdCPs[i].cpSend)
|
|
return(OENonStdCPs[i].cpSend);
|
|
else
|
|
{
|
|
if(SUCCEEDED(MimeOleGetCharsetInfo(g_hDefaultCharsetForMail,&CsetInfo)))
|
|
return(CsetInfo.cpiInternet);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return(uiCodePage);
|
|
}
|
|
|
|
// depending on registry setting, return correct hCharset for iso-2022-jp encoding
|
|
HCHARSET GetJP_ISOControlCharset(void)
|
|
{
|
|
BOOL fUseSIO;
|
|
Assert(g_lpIFontCache);
|
|
HRESULT hr = g_lpIFontCache->GetJP_ISOControl(&fUseSIO);
|
|
if (FAILED(hr))
|
|
fUseSIO = FALSE;
|
|
|
|
if (fUseSIO)
|
|
return GetMimeCharsetFromCodePage(50222); // _iso-2022-jp$SIO
|
|
else
|
|
return GetMimeCharsetFromCodePage(50221); // _iso-2022-jp$ESC
|
|
}
|
|
|