This commit is contained in:
putterman%netscape.com 1999-06-03 22:56:14 +00:00
Родитель 9aa5104ebc
Коммит 8dc4664732
4 изменённых файлов: 64 добавлений и 16 удалений

Просмотреть файл

@ -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