1998-06-23 02:39:40 +04:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
1999-11-06 06:43:54 +03:00
|
|
|
* The contents of this file are subject to the Netscape Public
|
|
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of
|
|
|
|
* the License at http://www.mozilla.org/NPL/
|
1998-06-23 02:39:40 +04:00
|
|
|
*
|
1999-11-06 06:43:54 +03:00
|
|
|
* Software distributed under the License is distributed on an "AS
|
|
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
|
|
* implied. See the License for the specific language governing
|
|
|
|
* rights and limitations under the License.
|
1998-06-23 02:39:40 +04:00
|
|
|
*
|
1999-11-06 06:43:54 +03:00
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape
|
1998-06-23 02:39:40 +04:00
|
|
|
* Communications Corporation. Portions created by Netscape are
|
1999-11-06 06:43:54 +03:00
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1998-06-23 02:39:40 +04:00
|
|
|
*/
|
|
|
|
#include "msg.h"
|
|
|
|
#include "msgppane.h"
|
|
|
|
#include "msgfpane.h"
|
|
|
|
#include "msgmpane.h"
|
|
|
|
#include "msgtpane.h"
|
|
|
|
#include "msgfinfo.h"
|
|
|
|
|
|
|
|
MSG_ProgressPane::MSG_ProgressPane(MWContext* context, MSG_Master* master,
|
|
|
|
MSG_Pane *parentPane)
|
|
|
|
: MSG_Pane(context, master)
|
|
|
|
{
|
|
|
|
m_parentPane = parentPane;
|
|
|
|
|
|
|
|
// progress panes must not look appetizing to JavaScript
|
|
|
|
//XP_ASSERT(MWContextMailNewsProgress == context->type);
|
|
|
|
if (context->type != MWContextMailNewsProgress)
|
|
|
|
context->type = MWContextMailNewsProgress;
|
|
|
|
if (m_parentPane)
|
|
|
|
m_parentPane->SetShowingProgress(TRUE);
|
|
|
|
}
|
|
|
|
|
|
|
|
MSG_ProgressPane::~MSG_ProgressPane()
|
|
|
|
{
|
|
|
|
if (GetParentPane())
|
|
|
|
m_parentPane->SetShowingProgress(FALSE);
|
|
|
|
|
|
|
|
if (m_context->imapURLPane == this)
|
|
|
|
m_context->imapURLPane = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MsgERR
|
|
|
|
MSG_ProgressPane::DoCommand(MSG_CommandType command, MSG_ViewIndex* indices,
|
|
|
|
int32 numIndices)
|
|
|
|
{
|
|
|
|
int status = 0;
|
|
|
|
|
|
|
|
if ((command == MSG_GetNewMail || command == MSG_GetNextChunkMessages) && m_parentPane)
|
|
|
|
{
|
|
|
|
MSG_FolderInfo *folder = m_parentPane->GetFolder();
|
|
|
|
if (folder && folder->IsNews())
|
|
|
|
status = GetNewNewsMessages(m_parentPane, folder, command == MSG_GetNextChunkMessages);
|
|
|
|
else if (command == MSG_GetNewMail)
|
|
|
|
status = GetNewMail(m_parentPane, folder);
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
else if (command == MSG_CompressFolder)
|
|
|
|
{
|
|
|
|
XP_ASSERT(numIndices <= 1);
|
|
|
|
MSG_FolderInfo *folder = NULL;
|
|
|
|
switch (m_parentPane->GetPaneType()) {
|
|
|
|
case MSG_FOLDERPANE:
|
|
|
|
if (numIndices == 1)
|
|
|
|
folder = ((MSG_FolderPane*) m_parentPane)->GetFolderInfo(indices[0]);
|
|
|
|
break;
|
|
|
|
case MSG_THREADPANE:
|
|
|
|
folder = ((MSG_ThreadPane *) m_parentPane)->GetFolder();
|
|
|
|
break;
|
|
|
|
case MSG_MESSAGEPANE:
|
|
|
|
folder = ((MSG_MessagePane *) m_parentPane)->GetFolder();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
XP_ASSERT(FALSE); // msg command status should be false
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (folder && folder->IsMail())
|
|
|
|
{
|
|
|
|
MSG_FolderInfoMail *mailFolder = folder->GetMailFolderInfo();
|
|
|
|
if (mailFolder)
|
|
|
|
status = CompressOneMailFolder(mailFolder);
|
|
|
|
}
|
|
|
|
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return MSG_Pane::DoCommand(command, indices, numIndices);
|
|
|
|
}
|
|
|
|
|
|
|
|
MSG_FolderInfo *MSG_ProgressPane::GetFolder()
|
|
|
|
{
|
|
|
|
MSG_FolderInfo *retFolder = NULL;
|
|
|
|
if (GetParentPane())
|
|
|
|
retFolder = m_parentPane->GetFolder();
|
|
|
|
return retFolder;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MSG_ProgressPane::CrushUpdateLevelToZero()
|
|
|
|
{
|
|
|
|
if (GetParentPane())
|
|
|
|
m_parentPane->CrushUpdateLevelToZero();
|
|
|
|
}
|
|
|
|
|
|
|
|
void MSG_ProgressPane::StartingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where,
|
|
|
|
int32 num)
|
|
|
|
{
|
|
|
|
if (GetParentPane())
|
|
|
|
m_parentPane->StartingUpdate(code, where, num);
|
|
|
|
}
|
|
|
|
void MSG_ProgressPane::EndingUpdate(MSG_NOTIFY_CODE code, MSG_ViewIndex where,
|
|
|
|
int32 num)
|
|
|
|
{
|
|
|
|
if (GetParentPane())
|
|
|
|
m_parentPane->EndingUpdate(code, where, num);
|
|
|
|
}
|
|
|
|
|
|
|
|
MSG_Pane* MSG_ProgressPane::GetParentPane()
|
|
|
|
{
|
|
|
|
// parent pane may have been deleted w/o us knowing, so check if it's in master list.
|
|
|
|
if (!PaneInMasterList(m_parentPane))
|
|
|
|
m_parentPane = NULL;
|
|
|
|
return m_parentPane;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MSG_ProgressPane::OnFolderAdded (MSG_FolderInfo *folder, MSG_Pane *instigator)
|
|
|
|
{
|
|
|
|
// If the FE has run the IMAP New Folder command in a progress pane, they need
|
|
|
|
// to know when to take down the New Folder dialog box.
|
|
|
|
if (instigator == this)
|
|
|
|
FE_PaneChanged (this, FALSE, MSG_PaneNotifySelectNewFolder, MSG_VIEWINDEXNONE);
|
|
|
|
|
|
|
|
MSG_Pane::OnFolderAdded (folder, instigator);
|
|
|
|
}
|
|
|
|
|