зеркало из https://github.com/mozilla/gecko-dev.git
Added Charset functions.
This commit is contained in:
Родитель
9aa5104ebc
Коммит
8dc4664732
|
@ -18,8 +18,11 @@
|
|||
|
||||
#include "nsMsgDBFolder.h"
|
||||
#include "nsMsgFolderFlags.h"
|
||||
#include "nsIPref.h"
|
||||
|
||||
|
||||
static NS_DEFINE_CID(kPrefServiceCID, NS_PREF_CID);
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsMsgDBFolder, nsMsgFolder)
|
||||
NS_IMPL_RELEASE_INHERITED(nsMsgDBFolder, nsMsgFolder)
|
||||
|
||||
|
@ -42,6 +45,7 @@ NS_IMETHODIMP nsMsgDBFolder::QueryInterface(REFNSIID aIID, void** aInstancePtr)
|
|||
}
|
||||
|
||||
nsMsgDBFolder::nsMsgDBFolder(void)
|
||||
: mCharset("")
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -108,6 +112,57 @@ nsMsgDBFolder::HasMessage(nsIMessage *message, PRBool *hasMessage)
|
|||
return rv;
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgDBFolder::GetCharset(PRUnichar * *aCharset)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if(!aCharset)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
if(mCharset == "")
|
||||
{
|
||||
NS_WITH_SERVICE(nsIPref, prefs, kPrefServiceCID, &rv);
|
||||
|
||||
char *prefCharset = nsnull;
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
rv = prefs->CopyCharPref("intl.character_set_name", &prefCharset);
|
||||
}
|
||||
|
||||
nsString prefCharsetStr;
|
||||
if(prefCharset)
|
||||
{
|
||||
prefCharsetStr = prefCharset;
|
||||
PR_Free(prefCharset);
|
||||
}
|
||||
else
|
||||
{
|
||||
prefCharsetStr = "us-ascii";
|
||||
}
|
||||
*aCharset = prefCharsetStr.ToNewUnicode();
|
||||
}
|
||||
else
|
||||
{
|
||||
*aCharset = mCharset.ToNewUnicode();
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgDBFolder::SetCharset(PRUnichar * aCharset)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIDBFolderInfo> folderInfo;
|
||||
nsCOMPtr<nsIMsgDatabase> db;
|
||||
rv = GetDBFolderInfoAndDB(getter_AddRefs(folderInfo), getter_AddRefs(db));
|
||||
if(NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsString charset(aCharset);
|
||||
rv = folderInfo->SetCharacterSet(charset);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult nsMsgDBFolder::ReadDBFolderInfo(PRBool force)
|
||||
{
|
||||
// Since it turns out to be pretty expensive to open and close
|
||||
|
@ -119,8 +174,8 @@ nsresult nsMsgDBFolder::ReadDBFolderInfo(PRBool force)
|
|||
{
|
||||
nsCOMPtr<nsIDBFolderInfo> folderInfo;
|
||||
nsCOMPtr<nsIMsgDatabase> db;
|
||||
result = NS_SUCCEEDED(GetDBFolderInfoAndDB(getter_AddRefs(folderInfo), getter_AddRefs(db)));
|
||||
if(result)
|
||||
result = GetDBFolderInfoAndDB(getter_AddRefs(folderInfo), getter_AddRefs(db));
|
||||
if(NS_SUCCEEDED(result))
|
||||
{
|
||||
mIsCachable = TRUE;
|
||||
if (folderInfo)
|
||||
|
@ -137,7 +192,7 @@ nsresult nsMsgDBFolder::ReadDBFolderInfo(PRBool force)
|
|||
//folderInfo->GetImapTotalPendingMessages(&mNumPendingTotalMessages);
|
||||
//folderInfo->GetImapUnreadPendingMessages(&mNumPendingUnreadMessages);
|
||||
|
||||
// folderInfo->GetCSID(&mCsid);
|
||||
folderInfo->GetCharacterSet(mCharset);
|
||||
|
||||
if (db && !db->HasNew() && mNumPendingUnreadMessages <= 0)
|
||||
ClearFlag(MSG_FOLDER_FLAG_GOT_NEW);
|
||||
|
|
|
@ -41,6 +41,8 @@ public:
|
|||
NS_IMETHOD GetThreads(nsIEnumerator** threadEnumerator);
|
||||
NS_IMETHOD GetThreadForMessage(nsIMessage *message, nsIMsgThread **thread);
|
||||
NS_IMETHOD HasMessage(nsIMessage *message, PRBool *hasMessage);
|
||||
NS_IMETHOD GetCharset(PRUnichar * *aCharset);
|
||||
NS_IMETHOD SetCharset(PRUnichar * aCharset);
|
||||
|
||||
//nsIDBChangeListener
|
||||
NS_IMETHOD OnKeyChange(nsMsgKey aKeyChanged, PRUint32 aOldFlags, PRUint32 aNewFlags,
|
||||
|
@ -60,6 +62,7 @@ protected:
|
|||
|
||||
protected:
|
||||
nsCOMPtr<nsIMsgDatabase> mDatabase;
|
||||
nsString mCharset;
|
||||
|
||||
|
||||
};
|
||||
|
|
|
@ -50,7 +50,6 @@ nsMsgFolder::nsMsgFolder(void)
|
|||
mParent(nsnull),
|
||||
mNumUnreadMessages(-1),
|
||||
mNumTotalMessages(-1),
|
||||
mCsid(0),
|
||||
mDepth(0),
|
||||
mPrefFlags(0)
|
||||
{
|
||||
|
@ -802,15 +801,6 @@ NS_IMETHODIMP nsMsgFolder::GetFolderPrefFlags(PRUint32 *flags)
|
|||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::SetFolderCSID(PRInt16 csid)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetFolderCSID(PRInt16 *csid)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::SetLastMessageLoaded(nsMsgKey lastMessageLoaded)
|
||||
{
|
||||
|
|
|
@ -178,8 +178,6 @@ public:
|
|||
|
||||
NS_IMETHOD SetFolderPrefFlags(PRUint32 flags);
|
||||
NS_IMETHOD GetFolderPrefFlags(PRUint32 *flags);
|
||||
NS_IMETHOD SetFolderCSID(PRInt16 csid);
|
||||
NS_IMETHOD GetFolderCSID(PRInt16 *csid);
|
||||
|
||||
|
||||
NS_IMETHOD SetLastMessageLoaded(nsMsgKey lastMessageLoaded);
|
||||
|
@ -263,6 +261,9 @@ public:
|
|||
NS_IMETHOD DeleteMessages(nsISupportsArray *messages) = 0;
|
||||
NS_IMETHOD GetNewMessages();
|
||||
|
||||
NS_IMETHOD GetCharset(PRUnichar * *aCharset) = 0;
|
||||
NS_IMETHOD SetCharset(PRUnichar * aCharset) = 0;
|
||||
|
||||
protected:
|
||||
nsresult NotifyPropertyChanged(char *property, char* oldValue, char* newValue);
|
||||
nsresult NotifyPropertyFlagChanged(nsISupports *item, char *property, PRUint32 oldValue,
|
||||
|
@ -288,7 +289,6 @@ protected:
|
|||
nsVoidArray *mListeners; //This can't be an nsISupportsArray because due to
|
||||
//ownership issues, listeners can't be AddRef'd
|
||||
|
||||
PRInt16 mCsid; // default csid for folder/newsgroup - maintained by fe.
|
||||
PRUint8 mDepth;
|
||||
PRInt32 mPrefFlags; // prefs like MSG_PREF_OFFLINE, MSG_PREF_ONE_PANE, etc
|
||||
nsISupports *mSemaphoreHolder; // set when the folder is being written to
|
||||
|
|
Загрузка…
Ссылка в новой задаче