зеркало из https://github.com/mozilla/pjs.git
142 строки
4.0 KiB
C++
142 строки
4.0 KiB
C++
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||
|
*
|
||
|
* The contents of this file are subject to the Netscape Public License
|
||
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
||
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
||
|
* http://www.mozilla.org/NPL/
|
||
|
*
|
||
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||
|
* for the specific language governing rights and limitations under the
|
||
|
* NPL.
|
||
|
*
|
||
|
* The Initial Developer of this code under the NPL is Netscape
|
||
|
* Communications Corporation. Portions created by Netscape are
|
||
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||
|
* Reserved.
|
||
|
*/
|
||
|
#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);
|
||
|
}
|
||
|
|