gecko-dev/cmd/macfe/MailNews/CThreadWindow.h

136 строки
4.2 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) 1996 Netscape Communications Corporation. All Rights
* Reserved.
*/
// CThreadWindow.h
#pragma once
// Mac UI Lib
#include "CMailNewsWindow.h"
#include "msgcom.h"
#include "cstring.h"
class CMessageView;
class CThreadView;
class CMessageFolderView;
class CThreadMessageController;
class CFolderThreadController;
typedef struct MSG_ResultElement MSG_ResultElement;
//======================================
class CThreadWindow
: public CMailNewsWindow
// This window can have up to three contexts (folder, thread, message). The
// one managed by the base class is the THREAD context.
//======================================
{
private:
typedef CMailNewsWindow Inherited;
public:
enum { class_ID = 'thWN', res_ID = 10509, res_ID_Alt = 10508 };
CThreadWindow(LStream *inStream);
virtual ~CThreadWindow();
virtual void FinishCreateSelf();
virtual void AboutToClose(); // place to put common code from [Attempt|Do]Close()
static CThreadWindow* ShowInbox(CommandT inCommand);
enum { kDontMakeNew = false, kMakeNew = true };
static CThreadWindow* FindAndShow(
const MSG_FolderInfo* inFolderInfo,
Boolean makeNew = kDontMakeNew,
CommandT inCommand = cmd_Nothing,
Boolean forceNewWindow = false);
static CThreadWindow* FindOrCreate(
const MSG_FolderInfo* inFolderInfo,
CommandT inCommand = cmd_Nothing);
static CThreadWindow* OpenFromURL(const char* url);
cstring GetCurrentURL() const;
static void CloseAll(const MSG_FolderInfo* inFolderInfo);
virtual CNSContext* CreateContext() const;
virtual void StopAllContexts();
virtual Boolean IsAnyContextBusy();
virtual CMailFlexTable* GetActiveTable();
// Return the currently active table in the window, nil if none
virtual CMailFlexTable* GetSearchTable();
CThreadView* GetThreadView();
CMessageFolderView* GetFolderView();
CMessageView* GetMessageView();
// Return the message view. Note: there may be no MSG_Pane in it!
void SetFolderName(const char* inFolderName, Boolean inIsNewsgroup);
// CSaveWindowStatus Overrides:
virtual void ReadWindowStatus(LStream *inStatusData);
// Overridden to stagger in the default case.
virtual void WriteWindowStatus(LStream *inStatusData);
virtual UInt16 GetValidStatusVersion() const;
virtual ResIDT GetStatusResID() const;
// I18N stuff
virtual Int16 DefaultCSIDForNewWindow(void);
void SetDefaultCSID(Int16 default_csid);
void ShowMessageKey(MessageKey inKey);
protected:
void SetStatusResID(ResIDT id) { mStatusResID = id; }
void UpdateFilePopupCurrentItem();
virtual void ActivateSelf(void);
virtual void AdaptToolbarToFolder(void);
// LCommander overrides
protected:
virtual void FindCommandStatus(
CommandT inCommand,
Boolean &outEnabled,
Boolean &outUsesMark,
Char16 &outMark,
Str255 outName);
virtual Boolean ObeyCommand(
CommandT inCommand,
void *ioParam);
// CNetscapeWindow overrides
protected:
virtual URL_Struct* CreateURLForProxyDrag(char* outTitle = nil);
virtual CExtraFlavorAdder* CreateExtraFlavorAdder() const;
// CMailNewsWindow overrides
protected:
virtual const char* GetLocationBarPrefName() const;
//DATA:
protected:
ResIDT mStatusResID;
CThreadView* mThreadView;
CThreadMessageController* mThreadMessageController;
CMessageFolderView* mFolderView;
CMailNewsContext* mFolderContext;
CFolderThreadController* mFolderThreadController;
}; // class CThreadWindow