fix 335877 imap subscribe ui broken on servers with non / hierarchy delimiter, sr=mscott

This commit is contained in:
bienvenu%nventure.com 2006-04-29 02:42:45 +00:00
Родитель de0fa51740
Коммит 6c24b6506e
2 изменённых файлов: 4 добавлений и 40 удалений

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

@ -2675,43 +2675,6 @@ NS_IMETHODIMP nsImapIncomingServer::OnLogonRedirectionReply(const PRUnichar *pHo
return rv;
}
nsresult
nsImapIncomingServer::SetDelimiterFromHierarchyDelimiter()
{
nsresult rv = NS_OK;
nsCOMPtr<nsIImapService> imapService = do_GetService(kImapServiceCID, &rv);
NS_ENSURE_SUCCESS(rv,rv);
if (!imapService) return NS_ERROR_FAILURE;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIMsgImapMailFolder> rootMsgFolder = do_QueryInterface(rootFolder, &rv);
NS_ENSURE_SUCCESS(rv,rv);
if (!rootMsgFolder) return NS_ERROR_FAILURE;
PRUnichar delimiter = '/';
rv = rootMsgFolder->GetHierarchyDelimiter(&delimiter);
NS_ENSURE_SUCCESS(rv,rv);
#ifdef DEBUG_seth
printf("setting delimiter to %c\n",char(delimiter));
#endif
if (delimiter == kOnlineHierarchySeparatorUnknown) {
delimiter = '/';
#ifdef DEBUG_seth
printf("..no, override delimiter to %c\n",char(delimiter));
#endif
}
rv = SetDelimiter(char(delimiter));
NS_ENSURE_SUCCESS(rv,rv);
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, PRBool aForceToServer /*ignored*/, const char *uri)
{
@ -2726,7 +2689,8 @@ nsImapIncomingServer::StartPopulatingWithUri(nsIMsgWindow *aMsgWindow, PRBool aF
rv = mInner->StartPopulatingWithUri(aMsgWindow, aForceToServer, uri);
NS_ENSURE_SUCCESS(rv,rv);
rv = SetDelimiterFromHierarchyDelimiter();
// imap always uses the canonical delimiter form of paths for subscribe ui.
rv = SetDelimiter('/');
NS_ENSURE_SUCCESS(rv,rv);
rv = SetShowFullName(PR_FALSE);
@ -2766,7 +2730,8 @@ nsImapIncomingServer::StartPopulating(nsIMsgWindow *aMsgWindow, PRBool aForceToS
rv = mInner->StartPopulating(aMsgWindow, aForceToServer);
NS_ENSURE_SUCCESS(rv,rv);
rv = SetDelimiterFromHierarchyDelimiter();
// imap always uses the canonical delimiter form of paths for subscribe ui.
rv = SetDelimiter('/');
NS_ENSURE_SUCCESS(rv,rv);
rv = SetShowFullName(PR_FALSE);

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

@ -113,7 +113,6 @@ protected:
const char *GetPFCName();
nsresult GetPFCForStringId(PRBool createIfMissing, PRInt32 stringId, nsIMsgFolder **aFolder);
private:
nsresult SetDelimiterFromHierarchyDelimiter();
nsresult SubscribeToFolder(const PRUnichar *aName, PRBool subscribe);
nsresult GetImapConnection (nsIEventQueue* aEventQueue,
nsIImapUrl* aImapUrl,