mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
272 lines
7.4 KiB
C++
272 lines
7.4 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.
|
|
*/
|
|
|
|
// offpkdlg.h : header file
|
|
//
|
|
|
|
#ifndef OFFPKDLG_H
|
|
#define OFFPKDLG_H
|
|
|
|
#include "property.h"
|
|
#include "outliner.h"
|
|
#include "apiimg.h"
|
|
#include "apimsg.h"
|
|
#include "mailmisc.h"
|
|
#include "msgcom.h"
|
|
#include "mnrccln.h"
|
|
|
|
|
|
//offline outliner item data container.
|
|
typedef struct ItemData
|
|
{
|
|
MSG_FolderInfo *infoData;
|
|
BOOL bDownLoad;
|
|
}ItemData;
|
|
|
|
// Definitions for column headings in the outliner control
|
|
#define ID_COL_NAME 1
|
|
#define ID_COL_DOWNLOAD 2
|
|
|
|
class COfflinePickerOutliner;
|
|
class CDlgOfflinePicker;
|
|
class COfflineList;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Class: COfflinePickerCX
|
|
class COfflinePickerCX: public CStubsCX
|
|
{
|
|
protected:
|
|
CDlgOfflinePicker* m_pDialog;
|
|
|
|
public:
|
|
COfflinePickerCX(ContextType type,CDlgOfflinePicker* pDialog);
|
|
void Alert(MWContext *pContext, const char *pMessage){return;}
|
|
|
|
virtual CWnd *GetDialogOwner() const { return (CWnd*)m_pDialog;}
|
|
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Class: COfflinePickerOutlinerParent
|
|
class COfflinePickerOutlinerParent : public COutlinerParent
|
|
{
|
|
public:
|
|
COfflinePickerOutlinerParent();
|
|
virtual ~COfflinePickerOutlinerParent();
|
|
virtual COutliner * GetOutliner ( );
|
|
virtual void CreateColumns ( );
|
|
virtual BOOL RenderData ( int idColumn, CRect & rect, CDC & dc, const char *);
|
|
|
|
void SetDialogOwner(CDlgOfflinePicker* pDialog) { m_pDialog = pDialog; }
|
|
|
|
// Implementation
|
|
protected:
|
|
|
|
CDlgOfflinePicker* m_pDialog;
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgOfflinePicker dialog
|
|
|
|
class CDlgOfflinePicker : public CDialog
|
|
{
|
|
|
|
public:
|
|
CMailNewsResourceSwitcher m_MNResourceSwitcher;
|
|
|
|
int m_nDiscussionSelectionCount;
|
|
int m_nMailSelectionCount;
|
|
int m_nDirectorySelectionCount;
|
|
int m_nPublicFolderSelectionCount;
|
|
int m_iIndex;
|
|
|
|
int nameWidth;
|
|
int downloadWidth;
|
|
int namePos;
|
|
int downloadPos;
|
|
|
|
BOOL m_bListChangeStarting;
|
|
BOOL m_bProcessGetDeletion;
|
|
|
|
|
|
CWnd *m_pParent;
|
|
MSG_Pane *m_pPane;
|
|
MSG_Master *m_pMaster;
|
|
COfflinePickerCX *m_pOfflineCX;
|
|
COfflineList *m_pPickerList;
|
|
|
|
// Construction
|
|
public:
|
|
CDlgOfflinePicker(CWnd* pParent = NULL); // standard constructor
|
|
~CDlgOfflinePicker();
|
|
|
|
MWContext* GetContext();
|
|
COfflinePickerCX* GetPickerContext() {return m_pOfflineCX;};
|
|
|
|
MSG_Pane * GetPane() {return m_pPane;};
|
|
COfflineList* GetList() {return m_pPickerList;};
|
|
COfflineList** GetListHandle() {return &m_pPickerList;};
|
|
COfflinePickerOutliner * GetOutliner() { return m_pOutliner; };
|
|
|
|
void SetPickerContext(COfflinePickerCX* pCX) {m_pOfflineCX = pCX;};
|
|
void SetPane(MSG_Pane *pPane) {m_pPane = pPane;};
|
|
void SetList(COfflineList* pList) {m_pPickerList = pList;};
|
|
|
|
Bool IsOutlinerHasFocus();
|
|
void EnableAllControls(BOOL bEnable);
|
|
void DoStopListChange();
|
|
void ClearPickerSelection();
|
|
|
|
virtual void ListChangeStarting(MSG_Pane* pane, XP_Bool asynchronous,
|
|
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
|
|
int32 num);
|
|
virtual void ListChangeFinished(MSG_Pane* pane, XP_Bool asynchronous,
|
|
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
|
|
int32 num);
|
|
|
|
// Dialog Data
|
|
//{{AFX_DATA(CDlgOfflinePicker)
|
|
enum { IDD = IDD_OFFLINE_PICKER };
|
|
// NOTE: the ClassWizard will add data members here
|
|
//}}AFX_DATA
|
|
|
|
int GetSelectionCount() {return m_nDiscussionSelectionCount;};
|
|
int GetMailSelectionCount() {return m_nMailSelectionCount;};
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CDlgOfflinePicker)
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
public:
|
|
virtual int DoModal ();
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
BOOL m_bActivated;
|
|
BOOL m_bSelChanged;
|
|
BOOL m_bNotifyAll; //MAG_NotifyALl when outliner is not visible
|
|
BOOL m_bInitDialog;
|
|
BOOL m_bDoShowWindow;
|
|
|
|
COfflinePickerOutlinerParent *m_pOutlinerParent;
|
|
COfflinePickerOutliner *m_pOutliner;
|
|
|
|
void CleanupOnClose();
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CDlgOfflinePicker)
|
|
virtual void OnOK();
|
|
virtual BOOL OnInitDialog();
|
|
virtual void OnCancel();
|
|
virtual void OnHelp();
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
|
|
class COfflinePickerOutliner : public CMailNewsOutliner
|
|
{
|
|
friend class COfflinePickerOutlinerParent;
|
|
|
|
protected:
|
|
char* m_pszExtraText;
|
|
OutlinerAncestorInfo * m_pAncestor;
|
|
MSG_FolderLine m_FolderLine;
|
|
BOOL m_bSelChanged;
|
|
CDlgOfflinePicker* m_pDialog;
|
|
|
|
public:
|
|
COfflinePickerOutliner ( );
|
|
virtual ~COfflinePickerOutliner ( );
|
|
|
|
MSG_Pane * GetPane() {return m_pPane;};
|
|
void SetDlg(CDlgOfflinePicker *pDialog) { m_pDialog = pDialog; }
|
|
CDlgOfflinePicker * GetDlg() { return m_pDialog; }
|
|
void DeselectItem();
|
|
BOOL SelectInitialItem();
|
|
BOOL HasSelectableItems();
|
|
|
|
virtual void OnSelChanged();
|
|
virtual void OnSelDblClk();
|
|
virtual int ToggleExpansion ( int iLine );
|
|
|
|
virtual int GetDepth( int iLine );
|
|
virtual int GetNumChildren( int iLine );
|
|
virtual BOOL IsCollapsed( int iLine );
|
|
virtual BOOL ColumnCommand(int iColumn, int iLine);
|
|
|
|
virtual LPCTSTR GetColumnText ( UINT iColumn, void * pLineData );
|
|
virtual void * AquireLineData ( int iLine );
|
|
virtual void ReleaseLineData ( void * pLineData );
|
|
virtual void GetTreeInfo ( int iLine, uint32 * pFlags, int * iDepth,
|
|
OutlinerAncestorInfo ** pAncestor );
|
|
virtual BOOL RenderData ( UINT idColumn, CRect & rect, CDC & dc, const char * text);
|
|
virtual int TranslateIcon ( void *);
|
|
virtual int TranslateIconFolder ( void *);
|
|
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Class: COfflineList
|
|
class COfflineList: public IMsgList
|
|
{
|
|
|
|
CDlgOfflinePicker* m_pDialog;
|
|
|
|
unsigned long m_ulRefCount;
|
|
|
|
public:
|
|
// IUnknown Interface
|
|
STDMETHODIMP QueryInterface(REFIID,LPVOID *);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
// IMsgList Interface
|
|
virtual void ListChangeStarting(MSG_Pane* pane, XP_Bool asynchronous,
|
|
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
|
|
int32 num);
|
|
virtual void ListChangeFinished(MSG_Pane* pane, XP_Bool asynchronous,
|
|
MSG_NOTIFY_CODE notify, MSG_ViewIndex where,
|
|
int32 num);
|
|
virtual void GetSelection(MSG_Pane* pane, MSG_ViewIndex **indices, int *count,
|
|
int *focus);
|
|
virtual void SelectItem(MSG_Pane* pane, int item);
|
|
virtual void CopyMessagesInto( MSG_Pane *pane, MSG_ViewIndex *indices, int count,
|
|
MSG_FolderInfo *folderInfo) {}
|
|
virtual void MoveMessagesInto( MSG_Pane *pane, MSG_ViewIndex *indices, int count,
|
|
MSG_FolderInfo *folderInfo) {}
|
|
|
|
void SetPickerDialog(CDlgOfflinePicker * pDialog)
|
|
{ m_pDialog = pDialog; }
|
|
|
|
COfflineList(CDlgOfflinePicker *pDialog)
|
|
{
|
|
m_ulRefCount = 0;
|
|
m_pDialog = pDialog;
|
|
}
|
|
};
|
|
|
|
#endif OFFPKDLG_H
|