gecko-dev/cmd/winfe/cxnet1.h
1998-03-28 02:44:41 +00:00

170 lines
5.5 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 "cxstubs.h"
/////////////////////////////////////////////////////////////////////////////
// CNetworkCX command target
class CNetworkCX : public CCmdTarget, public CStubsCX
{
DECLARE_DYNCREATE(CNetworkCX)
protected:
CNetworkCX(); // protected constructor used by dynamic creation
// Attributes
private:
URL_Struct *m_pUrlData; // The url to load.
BOOL m_bStreamComplete; // Wether or not the load is completed.
BOOL m_bShowAllNews; // Wether or not to show all news articles.
BOOL m_bFancyNews; // Wether or not to use Fancy News.
BOOL m_bFancyFTP; // Wether or not to use Fancy FTP.
CString m_csUsername; // The registered user name.
CString m_csPassword; // The registered password.
enum {
m_OK = 0x0000, // Data is loaded ok
m_USER = 0x0001, // User name requested, may have still loaded if supplied
m_PASS = 0x0002, // User password requested, may have still loaded if supplied
m_BUSY = 0x0100, // Busy, try back later
m_SRVR = 0x0200, // Server reported an irregular status, probably an error.
m_INTL = 0x0400, // Internal loading error, never got to server.
m_ERRS = 0x0800 // A helpful error string is available provided by Netscape.
};
long m_lFlags; // Some status flags, to mark what happened, to help caller figure out what went wrong.
CString m_csErrorMessage;
// Read buffers to store data as it comes in.
private:
CPtrList m_cplBuffers;
public:
char *AllocUsername();
char *AllocPassword();
void SetPasswordRequested() {
m_lFlags |= m_PASS;
}
void SetUsernameRequested() {
m_lFlags |= m_USER;
}
// Operations
public:
int StreamWrite(const char *pWriteData, int32 lLength);
void StreamComplete();
void StreamAbort(int iStatus);
unsigned int StreamReady();
// Context overrides
public:
virtual void Alert(MWContext *pContext, const char *pMessage);
virtual XP_Bool Confirm(MWContext *pContext, const char *pConfirmMessage);
virtual char *Prompt(MWContext *pContext, const char *pPrompt, const char *pDefault);
virtual char *PromptPassword(MWContext *pContext, const char *pMessage);
virtual XP_Bool PromptUsernameAndPassword(MWContext *pContext, const char *pMessage, char **ppUsername, char **ppPassword);
virtual XP_Bool ShowAllNewsArticles(MWContext *pContext);
virtual XP_Bool UseFancyFTP(MWContext *pContext);
virtual XP_Bool UseFancyNewsgroupListing(MWContext *pContext);
virtual void GetUrlExitRoutine(URL_Struct *pUrl, int iStatus, MWContext *pContext);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CNetworkCX)
public:
virtual void OnFinalRelease();
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CNetworkCX();
// Generated message map functions
//{{AFX_MSG(CNetworkCX)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
DECLARE_OLECREATE(CNetworkCX)
// Generated OLE dispatch map functions
//{{AFX_DISPATCH(CNetworkCX)
afx_msg BSTR GetUsername();
afx_msg void SetUsername(LPCTSTR lpszNewValue);
afx_msg BSTR GetPassword();
afx_msg void SetPassword(LPCTSTR lpszNewValue);
afx_msg BOOL GetFlagShowAllNews();
afx_msg void SetFlagShowAllNews(BOOL bNewValue);
afx_msg BOOL GetFlagFancyFTP();
afx_msg void SetFlagFancyFTP(BOOL bNewValue);
afx_msg BOOL GetFlagFancyNews();
afx_msg void SetFlagFancyNews(BOOL bNewValue);
afx_msg void Close();
afx_msg short Read(BSTR FAR* pBuffer, short iAmount);
afx_msg long GetStatus();
afx_msg BOOL Open(LPCTSTR pURL, short iMethod, LPCTSTR pPostData, long lPostDataSize, LPCTSTR pPostHeaders);
afx_msg BSTR GetErrorMessage();
afx_msg short GetServerStatus();
afx_msg long GetContentLength();
afx_msg BSTR GetContentType();
afx_msg BSTR GetContentEncoding();
afx_msg BSTR GetExpires();
afx_msg BSTR GetLastModified();
afx_msg BSTR Resolve(LPCTSTR pBase, LPCTSTR pRelative);
afx_msg BOOL IsFinished();
afx_msg short BytesReady();
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// Miscellaneous Functions
extern "C" {
NET_StreamClass *nfe_OleStream(int iFormatOut, void *pDataObj, URL_Struct *pUrlData, MWContext *pContext);
int nfe_StreamWrite(NET_StreamClass *stream, const char *pWriteData, int32 lLength);
void nfe_StreamComplete(NET_StreamClass *stream);
void nfe_StreamAbort(NET_StreamClass *stream, int iStatus);
unsigned int nfe_StreamReady(NET_StreamClass *stream);
};
// Max amount of data to store in each CNetBuffer.
#define NETBUFSIZE (30 * 1024)
// Structure to store read data.
struct CNetBuffer {
int m_iHead;
int m_iSize;
char *m_pData;
CNetBuffer(int iSize) {
ASSERT(iSize);
m_iHead = 0;
m_iSize = iSize;
m_pData = new char[iSize];
}
~CNetBuffer() {
if(m_pData) {
delete m_pData;
}
}
};
/////////////////////////////////////////////////////////////////////////////