made changes for compatibility with MfcEmbed

This commit is contained in:
depstein%netscape.com 2002-01-08 20:40:06 +00:00
Родитель 0e0079e943
Коммит 48fc503594
5 изменённых файлов: 73 добавлений и 5 удалений

Просмотреть файл

@ -76,7 +76,10 @@
// Print Includes
#include "PrintProgressDialog.h"
//#include "PrintSetupDialog.h"
// Mozilla Includes
#include "nsIWidget.h"
#ifdef _DEBUG
#define new DEBUG_NEW
@ -966,13 +969,23 @@ LRESULT CBrowserView::OnFindMsg(WPARAM wParam, LPARAM lParam)
void CBrowserView::OnFilePrint()
{
nsresult rv;
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID, &rv));
if (NS_SUCCEEDED(rv))
{
prefs->SetBoolPref("print.use_native_print_dialog", PR_TRUE);
prefs->SetBoolPref("print.show_print_progress", PR_FALSE);
}
else
NS_ASSERTION(PR_FALSE, "Could not get preferences service");
nsCOMPtr<nsIDOMWindow> domWindow;
mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));
if(domWindow) {
nsCOMPtr<nsIWebBrowserPrint> print(do_GetInterface(mWebBrowser));
if(print)
{
CPrintProgressDialog dlg(mWebBrowser, domWindow);
CPrintProgressDialog dlg(mWebBrowser, domWindow, m_PrintSettings);
nsCOMPtr<nsIURI> currentURI;
nsresult rv = mWebNav->GetCurrentURI(getter_AddRefs(currentURI));

Просмотреть файл

@ -49,6 +49,7 @@
#endif
#include "IBrowserFrameGlue.h"
#include "nsIPrintSettings.h"
/////////////////////////////////////////////////////////////////////////////
// CBrowserView window
@ -156,6 +157,8 @@ public:
// Generated message map functions
protected:
nsCOMPtr<nsIPrintSettings> m_PrintSettings;
//{{AFX_MSG(CBrowserView)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();

Просмотреть файл

@ -27,7 +27,6 @@ public:
NS_DECL_ISUPPORTS
NS_DECL_NSIWEBPROGRESSLISTENER
void ClearDlg() { m_PrintDlg = NULL; } // weak reference
// Implementation
@ -56,10 +55,10 @@ NS_IMETHODIMP
CDlgPrintListener::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aStateFlags, PRUint32 aStatus)
{
if (m_PrintDlg) {
if (aStatus == nsIWebProgressListener::STATE_START) {
if (aStateFlags == (nsIWebProgressListener::STATE_START|nsIWebProgressListener::STATE_IS_DOCUMENT)) {
return m_PrintDlg->OnStartPrinting();
} else if (aStatus == nsIWebProgressListener::STATE_STOP) {
} else if (aStateFlags == (nsIWebProgressListener::STATE_STOP|nsIWebProgressListener::STATE_IS_DOCUMENT)) {
return m_PrintDlg->OnEndPrinting(aStatus);
}
}
@ -97,17 +96,20 @@ CDlgPrintListener::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aR
return NS_ERROR_NOT_IMPLEMENTED;
}
/////////////////////////////////////////////////////////////////////////////
// CPrintProgressDialog dialog
CPrintProgressDialog::CPrintProgressDialog(nsIWebBrowser* aWebBrowser,
nsIDOMWindow* aDOMWin,
nsIPrintSettings* aPrintSettings,
CWnd* pParent /*=NULL*/)
: CDialog(CPrintProgressDialog::IDD, pParent),
m_WebBrowser(aWebBrowser),
m_DOMWin(aDOMWin),
m_PrintListener(nsnull),
m_PrintSettings(aPrintSettings),
m_InModalMode(PR_FALSE)
{
//{{AFX_DATA_INIT(CPrintProgressDialog)
@ -196,7 +198,8 @@ int CPrintProgressDialog::DoModal( )
m_PrintListener = new CDlgPrintListener(this); // constructor addrefs
if (m_PrintListener) {
// doModal will be set to false if the print job was cancelled
doModal = NS_SUCCEEDED(print->Print(m_DOMWin, nsnull, nsnull)) == PR_TRUE;
nsIWebProgressListener * wpl = NS_STATIC_CAST(nsIWebProgressListener*, m_PrintListener);
doModal = NS_SUCCEEDED(print->Print(m_DOMWin, m_PrintSettings, wpl)) == PR_TRUE;
}
}
@ -208,6 +211,48 @@ int CPrintProgressDialog::DoModal( )
}
/* void OnStartPrinting (); */
NS_IMETHODIMP
CPrintProgressDialog::OnStartPrinting()
{
return NS_OK;
}
/* void OnProgressPrinting (in PRUint32 aProgress, in PRUint32 aProgressMax); */
NS_IMETHODIMP
CPrintProgressDialog::OnProgressPrinting(PRUint32 aProgress, PRUint32 aProgressMax)
{
if (m_wndProgress.m_hWnd == NULL) return NS_OK;
// Initialize the progress meter we we get the "zero" progress
// which also tells us the max progress
if (aProgress == 0) {
CWnd *pWnd = GetDlgItem(IDC_PPD_DOC_TXT);
if(pWnd)
pWnd->SetWindowText(m_URL);
m_wndProgress.SetRange(0, aProgressMax);
m_wndProgress.SetPos(0);
}
m_wndProgress.SetPos(aProgress);
RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
return NS_OK;
}
/* void OnEndPrinting (in PRUint32 aStatus); */
NS_IMETHODIMP
CPrintProgressDialog::OnEndPrinting(PRUint32 aStatus)
{
// Here we need to know whether we have gone "modal"
// because we could get notified here if the user cancels
// before we ever get a chance to go into the modal loop
if (m_InModalMode) {
EndDialog(1);
}
return NS_OK;
}
void CPrintProgressDialog::OnCancel()
{
nsCOMPtr<nsIWebBrowserPrint> print(do_GetInterface(m_WebBrowser));

Просмотреть файл

@ -7,6 +7,7 @@
// PrintProgressDialog.h : header file
//
#include "nsIWebProgressListener.h"
class nsIWebBrowser;
class nsIDOMWindow;
@ -19,6 +20,7 @@ class CPrintProgressDialog : public CDialog
public:
CPrintProgressDialog(nsIWebBrowser* aWebBrowser,
nsIDOMWindow* aDOMWin,
nsIPrintSettings* aPrintSettings,
CWnd* pParent = NULL);
virtual ~CPrintProgressDialog();
virtual int DoModal( );
@ -26,6 +28,9 @@ public:
// Helper
void SetURI(const char* aTitle);
NS_IMETHOD OnStartPrinting(void);
NS_IMETHOD OnProgressPrinting(PRUint32 aProgress, PRUint32 aProgressMax);
NS_IMETHOD OnEndPrinting(PRUint32 aStatus);
// Dialog Data
//{{AFX_DATA(CPrintProgressDialog)
@ -48,6 +53,7 @@ protected:
nsIWebBrowser* m_WebBrowser;
nsIDOMWindow* m_DOMWin;
nsCOMPtr<nsIWebProgressListener> m_PrintListener;
nsIPrintSettings* m_PrintSettings;
BOOL m_InModalMode;
// Generated message map functions

Просмотреть файл

@ -58,6 +58,7 @@ LINCS = -Icomponents \
OBJS = \
.\$(OBJDIR)\TestEmbed.obj \
# .\$(OBJDIR)\nsIObserServ.obj \
.\$(OBJDIR)\BrowserFrm.obj \
.\$(OBJDIR)\BrowserFrameGlue.obj \
.\$(OBJDIR)\BrowserView.obj \