Implement nsPrintingPromptService for MfcEmbed
Bug 154244 r=chak sr=rpotts git-svn-id: svn://10.0.0.236/trunk@124418 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -72,6 +72,12 @@ static char THIS_FILE[] = __FILE__;
|
||||
{0xa2112d6a, 0x0e28, 0x421f, {0xb4, 0x6a, 0x25, 0xc0, 0xb3, 0x8, 0xcb, 0xd0}}
|
||||
static NS_DEFINE_CID(kPromptServiceCID, NS_PROMPTSERVICE_CID);
|
||||
|
||||
// this is for overriding the Mozilla default PrintingPromptService component
|
||||
#include "PrintingPromptService.h"
|
||||
#define NS_PRINTINGPROMPTSERVICE_CID \
|
||||
{0xe042570c, 0x62de, 0x4bb6, { 0xa6, 0xe0, 0x79, 0x8e, 0x3c, 0x7, 0xb4, 0xdf}}
|
||||
static NS_DEFINE_CID(kPrintingPromptServiceCID, NS_PRINTINGPROMPTSERVICE_CID);
|
||||
|
||||
// this is for overriding the Mozilla default HelperAppLauncherDialog
|
||||
#include "HelperAppService.h"
|
||||
#define NS_HELPERAPPLAUNCHERDIALOG_CID \
|
||||
@@ -209,6 +215,29 @@ nsresult CMfcEmbedApp::OverrideComponents()
|
||||
::FreeLibrary(overlib);
|
||||
}
|
||||
|
||||
// replace Mozilla's default PrintingPromptService with our own, if the
|
||||
// expected override DLL is present
|
||||
overlib = ::LoadLibrary(kComponentsLibname);
|
||||
if (overlib) {
|
||||
InitPrintingPromptServiceType InitLib;
|
||||
MakeFactoryType MakeFactory;
|
||||
InitLib = reinterpret_cast<InitPrintingPromptServiceType>(::GetProcAddress(overlib, kPrintingPromptServiceInitFuncName));
|
||||
MakeFactory = reinterpret_cast<MakeFactoryType>(::GetProcAddress(overlib, kPrintingPromptServiceFactoryFuncName));
|
||||
|
||||
if (InitLib && MakeFactory) {
|
||||
InitLib(overlib);
|
||||
|
||||
nsCOMPtr<nsIFactory> printingPromptFactory;
|
||||
rv = MakeFactory(getter_AddRefs(printingPromptFactory));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
nsComponentManager::RegisterFactory(kPrintingPromptServiceCID,
|
||||
"Printing Prompt Service",
|
||||
"@mozilla.org/embedcomp/printingprompt-service;1",
|
||||
printingPromptFactory,
|
||||
PR_TRUE); // replace existing
|
||||
} else
|
||||
::FreeLibrary(overlib);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
@@ -171,6 +171,21 @@ BEGIN
|
||||
PUSHBUTTON "Cancel",IDCANCEL,150,94,50,14
|
||||
END
|
||||
|
||||
IDD_PRINT_PROGRESS_DIALOG DIALOG DISCARDABLE 0, 0, 294, 53
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Print Progress"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
PUSHBUTTON "Cancel",IDCANCEL,237,36,50,14
|
||||
RTEXT "URL:",IDC_PRINT_PROGRESS_URL_LABEL_TXT,7,7,30,8
|
||||
LTEXT "...",IDC_PRINT_PROGRESS_URL_TXT,41,7,231,8
|
||||
RTEXT "Progress:",IDC_STATIC,7,18,30,8
|
||||
CONTROL "Progress1",IDC_PRINT_PROGRESS_PRG,"msctls_progress32",
|
||||
WS_BORDER,41,18,217,8
|
||||
LTEXT "Preparing...",IDC_PRINT_PROGRESS_TXT,41,18,217,8
|
||||
LTEXT "",IDC_PRINT_PROGRESS_PERCENT_TXT,264,18,19,8
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -41,6 +41,11 @@ REQUIRES = \
|
||||
xpcom \
|
||||
string \
|
||||
dom \
|
||||
content \
|
||||
gfx \
|
||||
widget \
|
||||
pref \
|
||||
intl \
|
||||
webbrwsr \
|
||||
windowwatcher \
|
||||
exthandler \
|
||||
@@ -51,11 +56,17 @@ REQUIRES = \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
nsPrintDialogUtil.cpp \
|
||||
nsPrintProgressParams.cpp \
|
||||
PrintingPromptService.cpp \
|
||||
PrintProgressDialog.cpp \
|
||||
Dialogs.cpp \
|
||||
PromptService.cpp \
|
||||
HelperAppDlg.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DSO_LIBS = gkgfx
|
||||
|
||||
EXTRA_DSO_LDOPTS += \
|
||||
$(EXTRA_DSO_LIBS) \
|
||||
$(XPCOM_LIBS) \
|
||||
|
||||
@@ -0,0 +1,274 @@
|
||||
// PrintProgressDialog.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
//#include "mfcembed.h"
|
||||
#include "PrintProgressDialog.h"
|
||||
//#include "BrowserView.h"
|
||||
#include "nsIWebBrowser.h"
|
||||
#include "nsIWebBrowserPrint.h"
|
||||
#include "nsIInterfaceRequestorUtils.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPrintProgressDialog dialog
|
||||
|
||||
class CDlgPrintListener : public nsIWebProgressListener
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CDlgPrintListener(CPrintProgressDialog* aDlg);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIWEBPROGRESSLISTENER
|
||||
|
||||
void ClearDlg() { m_PrintDlg = NULL; } // weak reference
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
CPrintProgressDialog* m_PrintDlg;
|
||||
};
|
||||
|
||||
NS_IMPL_ADDREF(CDlgPrintListener)
|
||||
NS_IMPL_RELEASE(CDlgPrintListener)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(CDlgPrintListener)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebProgressListener)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
|
||||
CDlgPrintListener::CDlgPrintListener(CPrintProgressDialog* aDlg) :
|
||||
m_PrintDlg(aDlg)
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
}
|
||||
|
||||
/* void onStateChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aStateFlags, in nsresult aStatus); */
|
||||
NS_IMETHODIMP
|
||||
CDlgPrintListener::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 aStateFlags, nsresult aStatus)
|
||||
{
|
||||
if (m_PrintDlg) {
|
||||
if (aStateFlags == (nsIWebProgressListener::STATE_START|nsIWebProgressListener::STATE_IS_DOCUMENT)) {
|
||||
return m_PrintDlg->OnStartPrinting();
|
||||
|
||||
} else if (aStateFlags == (nsIWebProgressListener::STATE_STOP|nsIWebProgressListener::STATE_IS_DOCUMENT)) {
|
||||
return m_PrintDlg->OnEndPrinting(aStatus);
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onProgressChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress); */
|
||||
NS_IMETHODIMP
|
||||
CDlgPrintListener::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress)
|
||||
{
|
||||
if (m_PrintDlg) {
|
||||
return m_PrintDlg->OnProgressPrinting(aCurSelfProgress, aMaxSelfProgress);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onLocationChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI location); */
|
||||
NS_IMETHODIMP
|
||||
CDlgPrintListener::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStatusChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage); */
|
||||
NS_IMETHODIMP
|
||||
CDlgPrintListener::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const PRUnichar *aMessage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onSecurityChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long state); */
|
||||
NS_IMETHODIMP
|
||||
CDlgPrintListener::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 state)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPrintProgressDialog dialog
|
||||
|
||||
|
||||
CPrintProgressDialog::CPrintProgressDialog(CWnd* pParent,
|
||||
BOOL aIsForPrinting,
|
||||
nsIPrintProgressParams* aPPParams,
|
||||
nsIWebBrowserPrint* aWebBrowserPrint,
|
||||
nsIPrintSettings* aPrintSettings)
|
||||
: CDialog(CPrintProgressDialog::IDD, pParent),
|
||||
m_WebBrowserPrint(aWebBrowserPrint),
|
||||
m_PPParams(aPPParams),
|
||||
m_PrintListener(nsnull),
|
||||
m_PrintSettings(aPrintSettings),
|
||||
m_HasStarted(FALSE),
|
||||
m_IsForPrinting(aIsForPrinting)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CPrintProgressDialog)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
CPrintProgressDialog::~CPrintProgressDialog()
|
||||
{
|
||||
CDlgPrintListener * pl = (CDlgPrintListener*)m_PrintListener.get();
|
||||
if (pl) {
|
||||
pl->ClearDlg();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CPrintProgressDialog::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CPrintProgressDialog)
|
||||
// NOTE: the ClassWizard will add DDX and DDV calls here
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CPrintProgressDialog, CDialog)
|
||||
//{{AFX_MSG_MAP(CPrintProgressDialog)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPrintProgressDialog message handlers
|
||||
|
||||
BOOL CPrintProgressDialog::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
CWnd* cancelBtn = (CWnd*)GetDlgItem(IDCANCEL);
|
||||
if (cancelBtn)
|
||||
{
|
||||
if (m_IsForPrinting)
|
||||
{
|
||||
cancelBtn->EnableWindow(FALSE);
|
||||
} else {
|
||||
cancelBtn->ShowWindow(SW_HIDE);
|
||||
SetWindowText("Print Preview");
|
||||
}
|
||||
}
|
||||
|
||||
SetDocAndURL();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
|
||||
/* void OnStartPrinting (); */
|
||||
NS_IMETHODIMP
|
||||
CPrintProgressDialog::OnStartPrinting()
|
||||
{
|
||||
CProgressCtrl* progressCtrl = (CProgressCtrl *)GetDlgItem(IDC_PRINT_PROGRESS_PRG);
|
||||
CWnd* progressText = (CWnd*)GetDlgItem(IDC_PRINT_PROGRESS_TXT);
|
||||
if (!progressCtrl || !progressText) return NS_OK;
|
||||
|
||||
m_HasStarted = TRUE;
|
||||
progressCtrl->ShowWindow(SW_HIDE);
|
||||
|
||||
SetDocAndURL();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void OnProgressPrinting (in PRUint32 aProgress, in PRUint32 aProgressMax); */
|
||||
NS_IMETHODIMP
|
||||
CPrintProgressDialog::OnProgressPrinting(PRUint32 aProgress, PRUint32 aProgressMax)
|
||||
{
|
||||
CProgressCtrl* progressCtrl = (CProgressCtrl *)GetDlgItem(IDC_PRINT_PROGRESS_PRG);
|
||||
CWnd* progressText = (CWnd*)GetDlgItem(IDC_PRINT_PROGRESS_TXT);
|
||||
if (!progressCtrl || !progressText) return NS_OK;
|
||||
|
||||
if (m_HasStarted && aProgress != 100)
|
||||
{
|
||||
progressText->ShowWindow(SW_HIDE);
|
||||
progressCtrl->ShowWindow(SW_SHOW);
|
||||
progressCtrl->SetRange(0, aProgressMax);
|
||||
m_HasStarted = FALSE;
|
||||
progressText->UpdateWindow();
|
||||
}
|
||||
|
||||
SetDocAndURL();
|
||||
|
||||
// Initialize the progress meter we we get the "zero" progress
|
||||
// which also tells us the max progress
|
||||
if (aProgress == 0) {
|
||||
progressCtrl->SetRange(0, aProgressMax);
|
||||
progressCtrl->SetPos(0);
|
||||
|
||||
}
|
||||
CWnd* cancelBtn = (CWnd*)GetDlgItem(IDCANCEL);
|
||||
if (cancelBtn && m_IsForPrinting)
|
||||
{
|
||||
cancelBtn->EnableWindow(TRUE);
|
||||
}
|
||||
progressCtrl->SetPos(aProgress);
|
||||
RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void OnEndPrinting (in PRUint32 aStatus); */
|
||||
NS_IMETHODIMP
|
||||
CPrintProgressDialog::OnEndPrinting(PRUint32 aStatus)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void CPrintProgressDialog::OnCancel()
|
||||
{
|
||||
if (m_WebBrowserPrint) {
|
||||
m_WebBrowserPrint->Cancel();
|
||||
}
|
||||
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
|
||||
void CPrintProgressDialog::SetDocAndURL()
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
if (m_PPParams)
|
||||
{
|
||||
PRUnichar* docTitle = nsnull;
|
||||
PRUnichar* urlStr = nsnull;
|
||||
m_PPParams->GetDocTitle(&docTitle);
|
||||
m_PPParams->GetDocURL(&urlStr);
|
||||
|
||||
if (docTitle)
|
||||
{
|
||||
if (*docTitle && W2T(docTitle))
|
||||
{
|
||||
SetWindowText(W2T(docTitle));
|
||||
}
|
||||
nsMemory::Free(docTitle);
|
||||
}
|
||||
|
||||
if (urlStr)
|
||||
{
|
||||
if (*urlStr && W2T(urlStr))
|
||||
{
|
||||
CWnd *pWnd = GetDlgItem(IDC_PRINT_PROGRESS_URL_TXT);
|
||||
if (pWnd)
|
||||
{
|
||||
pWnd->SetWindowText(W2T(urlStr));
|
||||
}
|
||||
}
|
||||
nsMemory::Free(urlStr);
|
||||
}
|
||||
}
|
||||
Invalidate();
|
||||
UpdateWindow();
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
#if !defined(AFX_PRINTPROGRESSDIALOG_H__1E3AA1B5_B8BB_4B25_86A5_A90E663D137F__INCLUDED_)
|
||||
#define AFX_PRINTPROGRESSDIALOG_H__1E3AA1B5_B8BB_4B25_86A5_A90E663D137F__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// PrintProgressDialog.h : header file
|
||||
//
|
||||
|
||||
#include "resource.h"
|
||||
#include "nsIWebProgressListener.h"
|
||||
#include "nsIWebBrowserPrint.h"
|
||||
#include "nsIPrintSettings.h"
|
||||
#include "nsIPrintProgressParams.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CPrintProgressDialog dialog
|
||||
|
||||
class CPrintProgressDialog : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CPrintProgressDialog(CWnd* pParent,
|
||||
BOOL aIsForPrinting,
|
||||
nsIPrintProgressParams* aPPParams,
|
||||
nsIWebBrowserPrint* aWebBrowserPrint,
|
||||
nsIPrintSettings* aPrintSettings);
|
||||
virtual ~CPrintProgressDialog();
|
||||
|
||||
// Helper
|
||||
void SetDocAndURL();
|
||||
|
||||
NS_IMETHOD OnStartPrinting(void);
|
||||
NS_IMETHOD OnProgressPrinting(PRUint32 aProgress, PRUint32 aProgressMax);
|
||||
NS_IMETHOD OnEndPrinting(PRUint32 aStatus);
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CPrintProgressDialog)
|
||||
enum { IDD = IDD_PRINT_PROGRESS_DIALOG };
|
||||
// NOTE: the ClassWizard will add data members here
|
||||
//}}AFX_DATA
|
||||
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CPrintProgressDialog)
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
CProgressCtrl m_wndProgress;
|
||||
CString m_URL;
|
||||
nsCOMPtr<nsIWebBrowserPrint> m_WebBrowserPrint;
|
||||
nsCOMPtr<nsIPrintProgressParams> m_PPParams;
|
||||
nsCOMPtr<nsIWebProgressListener> m_PrintListener;
|
||||
nsCOMPtr<nsIPrintSettings> m_PrintSettings;
|
||||
BOOL m_HasStarted;
|
||||
BOOL m_IsForPrinting;
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CPrintProgressDialog)
|
||||
virtual BOOL OnInitDialog();
|
||||
virtual void OnCancel();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_PRINTPROGRESSDIALOG_H__1E3AA1B5_B8BB_4B25_86A5_A90E663D137F__INCLUDED_)
|
||||
@@ -0,0 +1,438 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2001
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/* PrintingPromptService is intended to override the default Mozilla PrintingPromptService,
|
||||
giving nsIPrompt implementations of our own design, rather than using
|
||||
Mozilla's. Do this by building this into a component and registering the
|
||||
factory with the same CID/ContractID as Mozilla's (see MfcEmbed.cpp).
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Dialogs.h"
|
||||
#include "PrintingPromptService.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsMemory.h"
|
||||
#include "nsString.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIEmbeddingSiteWindow.h"
|
||||
#include "nsIFactory.h"
|
||||
#include "nsIPrintingPromptService.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIWebBrowserChrome.h"
|
||||
#include "nsIWindowWatcher.h"
|
||||
#include "nsIWebProgressListener.h"
|
||||
#include "nsPrintProgressParams.h"
|
||||
#include "nsPrintDialogUtil.h"
|
||||
#include "PrintProgressDialog.h"
|
||||
|
||||
// For PLEvent
|
||||
#include "nsIEventQueueService.h"
|
||||
#include "plevent.h"
|
||||
|
||||
static HINSTANCE gInstance;
|
||||
|
||||
//*****************************************************************************
|
||||
// ResourceState
|
||||
//*****************************************************************************
|
||||
|
||||
class ResourceState {
|
||||
public:
|
||||
ResourceState() {
|
||||
mPreviousInstance = ::AfxGetResourceHandle();
|
||||
::AfxSetResourceHandle(gInstance);
|
||||
}
|
||||
~ResourceState() {
|
||||
::AfxSetResourceHandle(mPreviousInstance);
|
||||
}
|
||||
private:
|
||||
HINSTANCE mPreviousInstance;
|
||||
};
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
// CPrintingPromptService
|
||||
//*****************************************************************************
|
||||
|
||||
class CPrintingPromptService: public nsIPrintingPromptService,
|
||||
public nsIWebProgressListener {
|
||||
public:
|
||||
CPrintingPromptService();
|
||||
virtual ~CPrintingPromptService();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIPRINTINGPROMPTSERVICE
|
||||
NS_DECL_NSIWEBPROGRESSLISTENER
|
||||
|
||||
void NotifyObserver();
|
||||
|
||||
private:
|
||||
PRBool FirePauseEvent();
|
||||
CWnd *CWndForDOMWindow(nsIDOMWindow *aWindow);
|
||||
|
||||
nsCOMPtr<nsIWindowWatcher> mWWatch;
|
||||
nsCOMPtr<nsIWebProgressListener> mWebProgressListener;
|
||||
nsCOMPtr<nsIObserver> mObserver;
|
||||
CPrintProgressDialog* m_PPDlg;
|
||||
};
|
||||
|
||||
// Define PL Callback Functions
|
||||
static void PR_CALLBACK HandlePLEvent(PLEvent* aEvent);
|
||||
static void PR_CALLBACK DestroyPLEvent(PLEvent* aEvent);
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
|
||||
NS_IMPL_ISUPPORTS2(CPrintingPromptService, nsIPrintingPromptService, nsIWebProgressListener)
|
||||
|
||||
CPrintingPromptService::CPrintingPromptService() :
|
||||
mWWatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")),
|
||||
m_PPDlg(NULL)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
CPrintingPromptService::~CPrintingPromptService() {
|
||||
}
|
||||
|
||||
CWnd *
|
||||
CPrintingPromptService::CWndForDOMWindow(nsIDOMWindow *aWindow)
|
||||
{
|
||||
nsCOMPtr<nsIWebBrowserChrome> chrome;
|
||||
CWnd *val = 0;
|
||||
|
||||
if (mWWatch) {
|
||||
nsCOMPtr<nsIDOMWindow> fosterParent;
|
||||
if (!aWindow) { // it will be a dependent window. try to find a foster parent.
|
||||
mWWatch->GetActiveWindow(getter_AddRefs(fosterParent));
|
||||
aWindow = fosterParent;
|
||||
}
|
||||
mWWatch->GetChromeForWindow(aWindow, getter_AddRefs(chrome));
|
||||
}
|
||||
|
||||
if (chrome) {
|
||||
nsCOMPtr<nsIEmbeddingSiteWindow> site(do_QueryInterface(chrome));
|
||||
if (site) {
|
||||
HWND w;
|
||||
site->GetSiteWindow(reinterpret_cast<void **>(&w));
|
||||
val = CWnd::FromHandle(w);
|
||||
}
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// nsIPrintingPrompt
|
||||
|
||||
//-----------------------------------------------------------
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::ShowPrintDialog(nsIDOMWindow *parent, nsIWebBrowserPrint *webBrowserPrint, nsIPrintSettings *printSettings)
|
||||
{
|
||||
//NS_ENSURE_ARG(parent);
|
||||
|
||||
CWnd* wnd = CWndForDOMWindow(parent);
|
||||
|
||||
NS_ASSERTION(wnd && wnd->m_hWnd, "Couldn't get native window for PRint Dialog!");
|
||||
if (wnd && wnd->m_hWnd) {
|
||||
return NativeShowPrintDialog(wnd->m_hWnd, webBrowserPrint, printSettings);
|
||||
} else {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------
|
||||
PRBool
|
||||
CPrintingPromptService::FirePauseEvent()
|
||||
{
|
||||
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
|
||||
|
||||
nsCOMPtr<nsIEventQueueService> event_service = do_GetService(kEventQueueServiceCID);
|
||||
|
||||
if (!event_service)
|
||||
{
|
||||
NS_WARNING("Failed to get event queue service");
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIEventQueue> event_queue;
|
||||
|
||||
event_service->GetThreadEventQueue(NS_CURRENT_THREAD,
|
||||
getter_AddRefs(event_queue));
|
||||
|
||||
if (!event_queue)
|
||||
{
|
||||
NS_WARNING("Failed to get event queue from service");
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PLEvent *event = new PLEvent;
|
||||
|
||||
if (!event)
|
||||
{
|
||||
NS_WARNING("Out of memory?");
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PL_InitEvent(event, this, (PLHandleEventProc)::HandlePLEvent, (PLDestroyEventProc)::DestroyPLEvent);
|
||||
|
||||
// The event owns the content pointer now.
|
||||
NS_ADDREF_THIS();
|
||||
|
||||
event_queue->PostEvent(event);
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
/* void showProgress (in nsIDOMWindow parent, in nsIWebBrowserPrint webBrowserPrint, in nsIPrintSettings printSettings, in nsIObserver openDialogObserver, in boolean isForPrinting, out nsIWebProgressListener webProgressListener, out nsIPrintProgressParams printProgressParams, out boolean notifyOnOpen); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::ShowProgress(nsIDOMWindow* parent,
|
||||
nsIWebBrowserPrint* webBrowserPrint, // ok to be null
|
||||
nsIPrintSettings* printSettings, // ok to be null
|
||||
nsIObserver* openDialogObserver, // ok to be null
|
||||
PRBool isForPrinting,
|
||||
nsIWebProgressListener** webProgressListener,
|
||||
nsIPrintProgressParams** printProgressParams,
|
||||
PRBool* notifyOnOpen)
|
||||
{
|
||||
NS_ENSURE_ARG(webProgressListener);
|
||||
NS_ENSURE_ARG(printProgressParams);
|
||||
NS_ENSURE_ARG(notifyOnOpen);
|
||||
|
||||
ResourceState setState;
|
||||
nsresult rv;
|
||||
|
||||
nsPrintProgressParams* prtProgressParams = new nsPrintProgressParams();
|
||||
rv = prtProgressParams->QueryInterface(NS_GET_IID(nsIPrintProgressParams), (void**)printProgressParams);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mObserver = openDialogObserver;
|
||||
|
||||
*notifyOnOpen = PR_FALSE;
|
||||
if (printProgressParams)
|
||||
{
|
||||
CWnd *wnd = CWndForDOMWindow(parent);
|
||||
m_PPDlg = new CPrintProgressDialog(wnd, isForPrinting, *printProgressParams, webBrowserPrint, printSettings);
|
||||
m_PPDlg->Create(IDD_PRINT_PROGRESS_DIALOG);
|
||||
m_PPDlg->ShowWindow(SW_SHOW);
|
||||
m_PPDlg->UpdateWindow();
|
||||
|
||||
*notifyOnOpen = FirePauseEvent();
|
||||
}
|
||||
|
||||
*webProgressListener = NS_STATIC_CAST(nsIWebProgressListener*, this);
|
||||
NS_ADDREF(*webProgressListener);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
/* void showPageSetup (in nsIDOMWindow parent, in nsIPrintSettings printSettings); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::ShowPageSetup(nsIDOMWindow *parent, nsIPrintSettings *printSettings, nsIObserver *aObs)
|
||||
{
|
||||
NS_ENSURE_ARG(printSettings);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* void showPrinterProperties (in nsIDOMWindow parent, in wstring printerName, in nsIPrintSettings printSettings); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::ShowPrinterProperties(nsIDOMWindow *parent, const PRUnichar *printerName, nsIPrintSettings *printSettings)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void CPrintingPromptService::NotifyObserver()
|
||||
{
|
||||
if (mObserver) {
|
||||
mObserver->Observe(nsnull, nsnull, nsnull);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void PR_CALLBACK HandlePLEvent(PLEvent* aEvent)
|
||||
{
|
||||
CPrintingPromptService *printingPromptService = (CPrintingPromptService*)PL_GetEventOwner(aEvent);
|
||||
|
||||
NS_ASSERTION(printingPromptService, "The event owner is null.");
|
||||
if (printingPromptService) {
|
||||
printingPromptService->NotifyObserver();
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
void PR_CALLBACK DestroyPLEvent(PLEvent* aEvent)
|
||||
{
|
||||
CPrintingPromptService *printingPromptService = (CPrintingPromptService*)PL_GetEventOwner(aEvent);
|
||||
NS_IF_RELEASE(printingPromptService);
|
||||
|
||||
delete aEvent;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// nsIWebProgressListener
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
/* void onStateChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aStateFlags, in nsresult aStatus); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 aStateFlags, nsresult aStatus)
|
||||
{
|
||||
if (aStateFlags & STATE_START)
|
||||
{
|
||||
if (m_PPDlg)
|
||||
{
|
||||
m_PPDlg->OnStartPrinting();
|
||||
}
|
||||
}
|
||||
|
||||
if (aStateFlags & STATE_STOP)
|
||||
{
|
||||
if (m_PPDlg)
|
||||
{
|
||||
m_PPDlg->OnProgressPrinting(100, 100);
|
||||
m_PPDlg->DestroyWindow();
|
||||
m_PPDlg = NULL;
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onProgressChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress)
|
||||
{
|
||||
if (m_PPDlg)
|
||||
{
|
||||
m_PPDlg->OnProgressPrinting(aCurTotalProgress, aMaxTotalProgress);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onLocationChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI location); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::OnLocationChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsIURI *location)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStatusChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::OnStatusChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, nsresult aStatus, const PRUnichar *aMessage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onSecurityChange (in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long state); */
|
||||
NS_IMETHODIMP
|
||||
CPrintingPromptService::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 state)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
// CPrintingPromptServiceFactory
|
||||
//*****************************************************************************
|
||||
|
||||
class CPrintingPromptServiceFactory : public nsIFactory {
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIFACTORY
|
||||
|
||||
CPrintingPromptServiceFactory();
|
||||
virtual ~CPrintingPromptServiceFactory();
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
|
||||
NS_IMPL_ISUPPORTS1(CPrintingPromptServiceFactory, nsIFactory)
|
||||
|
||||
CPrintingPromptServiceFactory::CPrintingPromptServiceFactory() {
|
||||
|
||||
NS_INIT_ISUPPORTS();
|
||||
}
|
||||
|
||||
CPrintingPromptServiceFactory::~CPrintingPromptServiceFactory() {
|
||||
}
|
||||
|
||||
NS_IMETHODIMP CPrintingPromptServiceFactory::CreateInstance(nsISupports *aOuter, const nsIID & aIID, void **aResult)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aResult);
|
||||
|
||||
*aResult = NULL;
|
||||
CPrintingPromptService *inst = new CPrintingPromptService;
|
||||
if (!inst)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsresult rv = inst->QueryInterface(aIID, aResult);
|
||||
if (rv != NS_OK) {
|
||||
// We didn't get the right interface, so clean up
|
||||
delete inst;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP CPrintingPromptServiceFactory::LockFactory(PRBool lock)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
|
||||
void InitPrintingPromptService(HINSTANCE instance) {
|
||||
|
||||
gInstance = instance;
|
||||
}
|
||||
|
||||
nsresult NS_NewPrintingPromptServiceFactory(nsIFactory** aFactory)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aFactory);
|
||||
*aFactory = nsnull;
|
||||
|
||||
CPrintingPromptServiceFactory *result = new CPrintingPromptServiceFactory;
|
||||
if (!result)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(result);
|
||||
*aFactory = result;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2001
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __PrintingPromptService_h
|
||||
#define __PrintingPromptService_h
|
||||
|
||||
#include "nsError.h"
|
||||
|
||||
// this component is for an MFC app; it's Windows. make sure this is defined.
|
||||
#ifndef XP_WIN
|
||||
#define XP_WIN
|
||||
#endif
|
||||
|
||||
class nsIFactory;
|
||||
|
||||
// factory creator, in hard and soft link formats
|
||||
extern "C" NS_EXPORT nsresult NS_NewPrintingPromptServiceFactory(nsIFactory** aFactory);
|
||||
typedef nsresult (__cdecl *MakeFactoryType)(nsIFactory **);
|
||||
#define kPrintingPromptServiceFactoryFuncName "NS_NewPrintingPromptServiceFactory"
|
||||
|
||||
// initialization function, in hard and soft link formats
|
||||
extern "C" NS_EXPORT void InitPrintingPromptService(HINSTANCE instance);
|
||||
typedef nsresult (__cdecl *InitPrintingPromptServiceType)(HINSTANCE instance);
|
||||
#define kPrintingPromptServiceInitFuncName "InitPrintingPromptService"
|
||||
|
||||
#endif
|
||||
@@ -32,6 +32,11 @@ REQUIRES = \
|
||||
xpcom \
|
||||
string \
|
||||
dom \
|
||||
content \
|
||||
gfx \
|
||||
widget \
|
||||
pref \
|
||||
intl \
|
||||
webBrowser_core \
|
||||
windowwatcher \
|
||||
exthandler \
|
||||
@@ -47,11 +52,15 @@ DLL=.\$(OBJDIR)\$(DLLNAME).dll
|
||||
RESFILE=Dialogs.res
|
||||
|
||||
LCFLAGS=/D "WIN32_LEAN_AND_MEAN" /D "_AFXDLL" /D "USE_SINGLE_SIGN_ON" \
|
||||
/D "_USRDLL" /D "_WINDLL"
|
||||
/D "_WINDLL"
|
||||
|
||||
LLFLAGS=-SUBSYSTEM:windows
|
||||
|
||||
CPP_OBJS= \
|
||||
.\$(OBJDIR)\nsPrintDialogUtil.obj \
|
||||
.\$(OBJDIR)\nsPrintProgressParams.obj \
|
||||
.\$(OBJDIR)\PrintingPromptService.obj \
|
||||
.\$(OBJDIR)\PrintProgressDialog.obj \
|
||||
.\$(OBJDIR)\Dialogs.obj \
|
||||
.\$(OBJDIR)\PromptService.obj \
|
||||
.\$(OBJDIR)\HelperAppDlg.obj \
|
||||
@@ -60,6 +69,7 @@ CPP_OBJS= \
|
||||
LLIBS= \
|
||||
$(LIBNSPR) \
|
||||
$(DIST)\lib\xpcom.lib \
|
||||
$(DIST)\lib\gkgfx.lib \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
1427
mozilla/embedding/tests/mfcembed/components/nsPrintDialogUtil.cpp
Normal file
1427
mozilla/embedding/tests/mfcembed/components/nsPrintDialogUtil.cpp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,45 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
#ifndef nsFlyOwnDialog_h___
|
||||
#define nsFlyOwnDialog_h___
|
||||
|
||||
nsresult NativeShowPrintDialog(HWND aHWnd,
|
||||
nsIWebBrowserPrint* aWebBrowserPrint,
|
||||
nsIPrintSettings* aPrintSettings);
|
||||
|
||||
#endif /* nsFlyOwnDialog_h___ */
|
||||
@@ -0,0 +1,83 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Rod Spears <rods@netscape.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsPrintProgressParams.h"
|
||||
#include "nsReadableUtils.h"
|
||||
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsPrintProgressParams, nsIPrintProgressParams)
|
||||
|
||||
nsPrintProgressParams::nsPrintProgressParams()
|
||||
{
|
||||
NS_INIT_ISUPPORTS();
|
||||
}
|
||||
|
||||
nsPrintProgressParams::~nsPrintProgressParams()
|
||||
{
|
||||
}
|
||||
|
||||
/* attribute wstring docTitle; */
|
||||
NS_IMETHODIMP nsPrintProgressParams::GetDocTitle(PRUnichar * *aDocTitle)
|
||||
{
|
||||
NS_ENSURE_ARG(aDocTitle);
|
||||
|
||||
*aDocTitle = ToNewUnicode(mDocTitle);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrintProgressParams::SetDocTitle(const PRUnichar * aDocTitle)
|
||||
{
|
||||
mDocTitle = aDocTitle;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* attribute wstring docURL; */
|
||||
NS_IMETHODIMP nsPrintProgressParams::GetDocURL(PRUnichar * *aDocURL)
|
||||
{
|
||||
NS_ENSURE_ARG(aDocURL);
|
||||
|
||||
*aDocURL = ToNewUnicode(mDocURL);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrintProgressParams::SetDocURL(const PRUnichar * aDocURL)
|
||||
{
|
||||
mDocURL = aDocURL;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Rod Spears <rods@netscape.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __nsPrintProgressParams_h
|
||||
#define __nsPrintProgressParams_h
|
||||
|
||||
#include "nsIPrintProgressParams.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsPrintProgressParams : public nsIPrintProgressParams
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIPRINTPROGRESSPARAMS
|
||||
|
||||
nsPrintProgressParams();
|
||||
virtual ~nsPrintProgressParams();
|
||||
|
||||
private:
|
||||
nsString mDocTitle;
|
||||
nsString mDocURL;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -9,6 +9,7 @@
|
||||
#define IDD_CONFIRM_CHECK_DIALOG 132
|
||||
#define IDD_PROGRESS_DIALOG 133
|
||||
#define IDD_CHOOSE_ACTION_DIALOG 134
|
||||
#define IDD_PRINT_PROGRESS_DIALOG 143
|
||||
#define IDC_PROMPT_ANSWER 1001
|
||||
#define IDC_PROMPT_TEXT 1002
|
||||
#define IDC_USERNAME 1003
|
||||
@@ -29,15 +30,22 @@
|
||||
#define IDC_OPEN_USING 1018
|
||||
#define IDC_CHOOSE_APP 1019
|
||||
#define IDC_APP_NAME 1020
|
||||
#define IDC_PRINT_PROGRESS_URL_TXT 1022
|
||||
#define IDC_PRINT_PROGRESS_PRG 1023
|
||||
#define IDC_PRINT_PROGRESS_PERCENT_TXT 1024
|
||||
#define IDC_PRINT_PROGRESS_URL_LABEL_TXT 1025
|
||||
#define IDC_PRINT_PROGRESS_TXT 1026
|
||||
|
||||
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_3D_CONTROLS 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 143
|
||||
#define _APS_NEXT_RESOURCE_VALUE 144
|
||||
#define _APS_NEXT_COMMAND_VALUE 32789
|
||||
#define _APS_NEXT_CONTROL_VALUE 1022
|
||||
#define _APS_NEXT_CONTROL_VALUE 1027
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user