зеркало из https://github.com/mozilla/gecko-dev.git
made changes for compatibility with MfcEmbed
This commit is contained in:
Родитель
0e0079e943
Коммит
48fc503594
|
@ -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 \
|
||||
|
|
Загрузка…
Ссылка в новой задаче