Completing work on Win98 integration feature
git-svn-id: svn://10.0.0.236/trunk@9794 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -23,6 +23,9 @@
|
||||
#include "helper.h"
|
||||
#include "nethelp.h"
|
||||
|
||||
#include "nsIDefaultBrowser.h"
|
||||
#include "prefapi.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||||
@@ -775,15 +778,35 @@ END_MESSAGE_MAP()
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
CDefaultBrowserDlg::CDefaultBrowserDlg(CWnd* pParent /*=NULL*/)
|
||||
CDefaultBrowserDlg::CDefaultBrowserDlg(CWnd* pParent /*=NULL*/, nsIDefaultBrowser* pDefaultBrowser /*=NULL*/)
|
||||
: CDefaultBrowserDlgBase(CDefaultBrowserDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CDefaultBrowserDlg)
|
||||
m_bIgnore = FALSE;
|
||||
m_bPerformCheck = TRUE; // If false, we wouldn't be here, now would we?
|
||||
m_pDefaultBrowser = pDefaultBrowser;
|
||||
if ( m_pDefaultBrowser ) {
|
||||
m_pDefaultBrowser->AddRef();
|
||||
}
|
||||
//}}AFX_DATA_INIT
|
||||
|
||||
} // END OF FUNCTION CDefaultBrowserDlg::CDefaultBrowserDlg()
|
||||
|
||||
CDefaultBrowserDlg::CDefaultBrowserDlg(nsIDefaultBrowser* pDefaultBrowser)
|
||||
: CDefaultBrowserDlgBase(CDefaultBrowserDlg::IDD, NULL)
|
||||
{
|
||||
m_bPerformCheck = TRUE; // If false, we wouldn't be here, now would we?
|
||||
m_pDefaultBrowser = pDefaultBrowser;
|
||||
if ( m_pDefaultBrowser ) {
|
||||
m_pDefaultBrowser->AddRef();
|
||||
}
|
||||
}
|
||||
|
||||
CDefaultBrowserDlg::~CDefaultBrowserDlg() {
|
||||
if ( m_pDefaultBrowser ) {
|
||||
m_pDefaultBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* CDefaultBrowserDlg::DoDataExchange
|
||||
@@ -804,7 +827,7 @@ void CDefaultBrowserDlg::DoDataExchange(CDataExchange* pDX)
|
||||
CDefaultBrowserDlgBase::DoDataExchange(pDX);
|
||||
|
||||
//{{AFX_DATA_MAP(CDefaultBrowserDlg)
|
||||
DDX_Check(pDX, IDC_IGNORE, m_bIgnore);
|
||||
DDX_Check(pDX, IDC_IGNORE, m_bPerformCheck);
|
||||
DDX_Control(pDX, IDC_LIST1, m_Listbox);
|
||||
//}}AFX_DATA_MAP
|
||||
|
||||
@@ -831,6 +854,12 @@ void CDefaultBrowserDlg::OnNo()
|
||||
if (UpdateData(TRUE))
|
||||
{
|
||||
EndDialog(ID_NO);
|
||||
|
||||
// Update "perform check" preference per check-box setting.
|
||||
if ( !m_bPerformCheck ) {
|
||||
PREF_SetBoolPref("browser.wfe.ignore_def_check",TRUE);
|
||||
}
|
||||
|
||||
} /* end if */
|
||||
|
||||
} // END OF FUNCTION CDefaultBrowserDlg::OnNo()
|
||||
@@ -856,6 +885,7 @@ void CDefaultBrowserDlg::OnDetails()
|
||||
if (UpdateData(TRUE))
|
||||
{
|
||||
EndDialog(IDC_SHOW_DESKTOP_PREFS);
|
||||
|
||||
} /* end if */
|
||||
|
||||
} // END OF FUNCTION CDefaultBrowserDlg::OnDetails()
|
||||
@@ -937,6 +967,21 @@ static BOOL IsListItemSelected(int* selArray, int count, int i)
|
||||
|
||||
void CDefaultBrowserDlg::OnOK()
|
||||
{
|
||||
// Dismiss the dialog.
|
||||
CDefaultBrowserDlgBase::OnOK();
|
||||
|
||||
// Update "perform check" preference per check-box setting.
|
||||
if ( !m_bPerformCheck ) {
|
||||
PREF_SetBoolPref("browser.wfe.ignore_def_check",TRUE);
|
||||
}
|
||||
|
||||
if ( m_pDefaultBrowser ) {
|
||||
// synchronize registry with these preferences.
|
||||
nsresult result = m_pDefaultBrowser->HandlePerPreferences();
|
||||
ASSERT( result == NS_OK );
|
||||
}
|
||||
|
||||
#if 0 // Old code.
|
||||
// Let's do it. Selected items become owned.
|
||||
// Unselected items become ignored (if the checkbox is checked)
|
||||
CDefaultBrowserDlgBase::OnOK();
|
||||
@@ -968,6 +1013,7 @@ void CDefaultBrowserDlg::OnOK()
|
||||
theItem->SetIgnored(TRUE);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* CCheckConfirmDialog: a generic "confirm" dialog including a checkbox.
|
||||
|
||||
@@ -305,15 +305,19 @@ protected:
|
||||
|
||||
#define CDefaultBrowserDlgBase CDialog
|
||||
|
||||
class nsIDefaultBrowser;
|
||||
|
||||
class CDefaultBrowserDlg : public CDefaultBrowserDlgBase
|
||||
{
|
||||
public:
|
||||
CDefaultBrowserDlg(CWnd* pParent = NULL);
|
||||
CDefaultBrowserDlg(CWnd* pParent = NULL, nsIDefaultBrowser* pDefaultBrowser = NULL);
|
||||
CDefaultBrowserDlg(nsIDefaultBrowser* pDefaultBrowser);
|
||||
~CDefaultBrowserDlg();
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CDefaultBrowserDlg)
|
||||
enum { IDD = IDD_DEFAULT_BROWSER };
|
||||
BOOL m_bIgnore;
|
||||
BOOL m_bPerformCheck;
|
||||
CListBox m_Listbox;
|
||||
//}}AFX_DATA
|
||||
|
||||
@@ -339,6 +343,9 @@ class CDefaultBrowserDlg : public CDefaultBrowserDlgBase
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
private:
|
||||
nsIDefaultBrowser* m_pDefaultBrowser; // nsIDefaultBrowser interface pointer.
|
||||
|
||||
}; // END OF CLASS CDefaultBrowserDlg()
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -41,6 +41,60 @@ class nsIDefaultBrowser : public nsISupports {
|
||||
|
||||
// DisplayDialog - displays the "default browser" dialog (intended for browser startup).
|
||||
NS_IMETHOD_(int) DisplayDialog() = 0;
|
||||
|
||||
// Prefs - nested structure defining default-browser related prefs.
|
||||
struct Prefs {
|
||||
PRBool bHandleFiles;
|
||||
PRBool bHandleShortcuts;
|
||||
PRBool bIntegrateWithActiveDesktop;
|
||||
// Internet shortcut protocols.
|
||||
struct {
|
||||
PRBool bHandleHTTP;
|
||||
PRBool bHandleHTTPS;
|
||||
PRBool bHandleFTP;
|
||||
};
|
||||
// File types.
|
||||
struct {
|
||||
PRBool bHandleHTML;
|
||||
PRBool bHandleJPEG;
|
||||
PRBool bHandleGIF;
|
||||
PRBool bHandleJS;
|
||||
PRBool bHandleXBM;
|
||||
PRBool bHandleTXT;
|
||||
};
|
||||
// "Active desktop" stuff.
|
||||
struct {
|
||||
PRBool bUseInternetKeywords;
|
||||
PRBool bUseNetcenterSearch;
|
||||
PRBool bDisableActiveDesktop;
|
||||
};
|
||||
};
|
||||
|
||||
// GetPreferences - Returns Prefs structure filled in with user's preferences.
|
||||
NS_IMETHOD GetPreferences( Prefs &prefs ) = 0;
|
||||
|
||||
// SetPreferences - Sets user preferences from Prefs structure contents.
|
||||
NS_IMETHOD SetPreferences( const Prefs &prefs ) = 0;
|
||||
|
||||
// Things - enumeration of protocols/files that Mozilla can handle.
|
||||
enum Thing {
|
||||
kHTTP, kHTTPS, kFTP, kMaxProtocol = kFTP,
|
||||
kHTML, kJPEG, kGIF, kJS, kXBM, kTXT, kMaxFileType = kTXT,
|
||||
kInternetKeywords, kNetcenterSearch, kActiveDesktop
|
||||
};
|
||||
|
||||
// IsHandling - returns whether Mozilla is handling a given thing.
|
||||
NS_IMETHOD_(PRBool) IsHandling( Thing thing ) = 0;
|
||||
|
||||
// StartHandling - does necessary stuff to have Mozilla take over handling of a
|
||||
// given thing.
|
||||
NS_IMETHOD StartHandling( Thing extOrProtocol ) = 0;
|
||||
|
||||
// StopHandling - vice versa
|
||||
NS_IMETHOD StopHandling( Thing extOrProtocol ) = 0;
|
||||
|
||||
// HandlePerPreferences - Apply preferences to registry.
|
||||
NS_IMETHOD HandlePerPreferences() = 0;
|
||||
};
|
||||
|
||||
#endif // _NSIDEFAULTBROWSER_H_
|
||||
|
||||
@@ -642,15 +642,14 @@ void CNetscapeApp::CheckDefaultBrowser()
|
||||
{
|
||||
// We're only worrying about this for Win32
|
||||
#ifdef XP_WIN32
|
||||
|
||||
// Construct the App's owned and lost list. Used to determine exactly which
|
||||
// file types were lost. This construction should perform the comparison and
|
||||
// update the lost list. The result will be written out to the registry.
|
||||
m_OwnedAndLostList.ConstructLists();
|
||||
|
||||
XP_Bool prefBool = FALSE;
|
||||
|
||||
PREF_GetBoolPref("browser.wfe.ignore_def_check",&prefBool);
|
||||
|
||||
MakeDefaultBrowser();
|
||||
|
||||
m_OwnedAndLostList.WriteLists();
|
||||
if ( !prefBool ) {
|
||||
MakeDefaultBrowser();
|
||||
}
|
||||
|
||||
#endif // XP_WIN32
|
||||
} // END OF FUNCTION CNetscapeApp::CheckDefaultBrowser()
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "winprefs/isppageo.h"
|
||||
#include "winprefs/brprefid.h"
|
||||
#include "winprefs/wprefid.h"
|
||||
#include "nsIDefaultBrowser.h"
|
||||
#ifdef MOZ_LOC_INDEP
|
||||
#include "winprefs/liprefid.h"
|
||||
#include "winprefs/iliprefs.h"
|
||||
@@ -2370,7 +2371,12 @@ wfe_DisplayPreferences(CGenericFrame *pFrame)
|
||||
CLSCTX_INPROC_SERVER,
|
||||
IID_ISpecifyPropertyPageObjects,
|
||||
(LPVOID *)&categories[nCategories]))) {
|
||||
nDesktopCategory = nCategories++;
|
||||
IWindowsPrefs *pWinPrefs;
|
||||
if( SUCCEEDED( categories[nCategories]->QueryInterface( IID_IWindowsPrefs, (LPVOID*)&pWinPrefs ) ) ) {
|
||||
pWinPrefs->SetDefaultBrowser( nsIDefaultBrowser::GetInterface() );
|
||||
pWinPrefs->Release();
|
||||
nDesktopCategory = nCategories++;
|
||||
}
|
||||
} else {
|
||||
// Register DLL and try again.
|
||||
RegisterCLSIDForDll( "winpref.dll" );
|
||||
@@ -2379,7 +2385,12 @@ wfe_DisplayPreferences(CGenericFrame *pFrame)
|
||||
CLSCTX_INPROC_SERVER,
|
||||
IID_ISpecifyPropertyPageObjects,
|
||||
(LPVOID *)&categories[nCategories]))) {
|
||||
nDesktopCategory = nCategories++;
|
||||
IWindowsPrefs *pWinPrefs;
|
||||
if( SUCCEEDED( categories[nCategories]->QueryInterface( IID_IWindowsPrefs, (LPVOID*)&pWinPrefs ) ) ) {
|
||||
pWinPrefs->SetDefaultBrowser( nsIDefaultBrowser::GetInterface() );
|
||||
pWinPrefs->Release();
|
||||
nDesktopCategory = nCategories++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#ifndef __WPREFID_H_
|
||||
#define __WPREFID_H_
|
||||
|
||||
#ifndef MOZ_COMMUNICATOR_IIDS
|
||||
|
||||
// {464DC700-2727-11d2-8043-00600811A9C3}
|
||||
DEFINE_GUID(IID_IWindowsPrefs,
|
||||
0x464dc700, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
|
||||
@@ -29,16 +27,18 @@ DEFINE_GUID(IID_IWindowsPrefs,
|
||||
DEFINE_GUID(CLSID_WindowsPrefs,
|
||||
0x464dc701, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
|
||||
|
||||
#else /* MOZ_COMMUNICATOR_IIDS */
|
||||
class nsIDefaultBrowser;
|
||||
|
||||
// {464DC700-2727-11d2-8043-00600811A9C3}
|
||||
DEFINE_GUID(IID_IWindowsPrefs,
|
||||
0x464dc700, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
|
||||
// IWindowsPrefs
|
||||
DECLARE_INTERFACE_(IWindowsPrefs, IUnknown)
|
||||
{
|
||||
// IUnknown methods
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
|
||||
// {464DC701-2727-11d2-8043-00600811A9C3}
|
||||
DEFINE_GUID(CLSID_WindowsPrefs,
|
||||
0x464dc701, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
|
||||
|
||||
#endif /* MOZ_COMMUNICATOR_IIDS */
|
||||
// IWindowsPrefs methods
|
||||
STDMETHOD(SetDefaultBrowser)(THIS_ nsIDefaultBrowser* pDefaultBrowser) PURE;
|
||||
};
|
||||
|
||||
#endif /* __WPREFID_H_ */
|
||||
|
||||
@@ -50,7 +50,7 @@ CPP_OBJS=.\$(OBJDIR)\winpref.obj .\$(OBJDIR)\winpages.obj
|
||||
LINCS=-I$(XPDIST)\public\dllcom -I$(XPDIST)\public\winprefs \
|
||||
-I$(XPDIST)\public\pref -I$(XPDIST)\public\dbm \
|
||||
-I$(XPDIST)\public\nspr -I$(XPDIST)\public\js \
|
||||
-I$(XPDIST)\public\libreg
|
||||
-I$(XPDIST)\public\libreg -I$(DEPTH)\cmd\winfe -I$(XPDIST)\public\xpcom
|
||||
|
||||
!include "$(DEPTH)\config\rules.mak"
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "cppageex.h"
|
||||
#include "xp_list.h"
|
||||
|
||||
#include "nsIDefaultBrowser.h"
|
||||
|
||||
//also in brpref\src\advpages.cpp, winfe\mnprefs.cpp
|
||||
#define WINPREF_PrefIsLocked(pPrefName) PREF_PrefIsLocked(pPrefName)
|
||||
|
||||
@@ -37,7 +39,8 @@ PREF_GetStringPref(LPCSTR lpszPref, CString &str);
|
||||
|
||||
class CBasicWindowsPrefs : public CPropertyPageEx {
|
||||
public:
|
||||
CBasicWindowsPrefs();
|
||||
CBasicWindowsPrefs(nsIDefaultBrowser *pDefaultBrowser);
|
||||
~CBasicWindowsPrefs();
|
||||
|
||||
protected:
|
||||
BOOL InitDialog();
|
||||
@@ -50,7 +53,10 @@ class CBasicWindowsPrefs : public CPropertyPageEx {
|
||||
BOOL OnCommand(int id, HWND hwndCtl, UINT notifyCode);
|
||||
|
||||
private:
|
||||
|
||||
nsIDefaultBrowser* m_pDefaultBrowser;
|
||||
BOOL m_bCheckOnStart;
|
||||
nsIDefaultBrowser::Prefs m_originalPrefs;
|
||||
nsIDefaultBrowser::Prefs m_currentPrefs;
|
||||
};
|
||||
|
||||
#endif /* __PAGES_H_ */
|
||||
|
||||
@@ -26,23 +26,38 @@
|
||||
#include "structs.h"
|
||||
#include "xp_help.h"
|
||||
|
||||
#include "nsIDefaultBrowser.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CBasicWindowsPrefs implementation
|
||||
CBasicWindowsPrefs::CBasicWindowsPrefs()
|
||||
: CPropertyPageEx(CComDll::m_hInstance, IDD_BASICWINPREFS, "" ) {
|
||||
CBasicWindowsPrefs::CBasicWindowsPrefs(nsIDefaultBrowser*pDefaultBrowser)
|
||||
: CPropertyPageEx(CComDll::m_hInstance, IDD_BASICWINPREFS, "" ),
|
||||
m_pDefaultBrowser( pDefaultBrowser ) {
|
||||
// Set member data using XP preferences
|
||||
assert( m_pDefaultBrowser );
|
||||
}
|
||||
|
||||
CBasicWindowsPrefs::~CBasicWindowsPrefs() {
|
||||
m_pDefaultBrowser->Release();
|
||||
}
|
||||
|
||||
BOOL CBasicWindowsPrefs::InitDialog()
|
||||
{
|
||||
// Check for locked preferences
|
||||
|
||||
return CPropertyPageEx::InitDialog();
|
||||
}
|
||||
|
||||
STDMETHODIMP CBasicWindowsPrefs::Activate(HWND hwndParent, LPCRECT lprc, BOOL bModal)
|
||||
{
|
||||
if (!m_bHasBeenActivated) {
|
||||
// Get user preferences and remember them.
|
||||
nsresult result = m_pDefaultBrowser->GetPreferences( m_originalPrefs );
|
||||
assert( result == NS_OK );
|
||||
|
||||
BOOL bIgnore = FALSE;
|
||||
PREF_GetBoolPref( "browser.wfe.ignore_def_check", &bIgnore );
|
||||
m_bCheckOnStart = !bIgnore;
|
||||
|
||||
m_currentPrefs = m_originalPrefs;
|
||||
}
|
||||
|
||||
return CPropertyPageEx::Activate(hwndParent, lprc, bModal);
|
||||
@@ -50,11 +65,32 @@ STDMETHODIMP CBasicWindowsPrefs::Activate(HWND hwndParent, LPCRECT lprc, BOOL bM
|
||||
|
||||
BOOL CBasicWindowsPrefs::DoTransfer(BOOL bSaveAndValidate)
|
||||
{
|
||||
// Synchronize dialog checkboxes from current preferences.
|
||||
CheckBoxTransfer( IDC_HANDLEFILES, m_currentPrefs.bHandleFiles, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLESHORTCUTS, m_currentPrefs.bHandleShortcuts, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_INTEGRATEWITHACTIVEDESKTOP, m_currentPrefs.bIntegrateWithActiveDesktop, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_CHECKONSTART, m_bCheckOnStart, bSaveAndValidate );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CBasicWindowsPrefs::ApplyChanges()
|
||||
{
|
||||
// Set "ignore on start" pref based on "check on start" status.
|
||||
BOOL bIgnore = !m_bCheckOnStart;
|
||||
PREF_SetBoolPref( "browser.wfe.ignore_def_check", bIgnore );
|
||||
|
||||
// If other prefs changed, store them.
|
||||
if ( XP_MEMCMP( &m_currentPrefs, &m_originalPrefs, sizeof( nsIDefaultBrowser::Prefs ) ) != 0 ) {
|
||||
// Store them in registry.
|
||||
nsresult result = m_pDefaultBrowser->SetPreferences( m_currentPrefs );
|
||||
assert( result == NS_OK );
|
||||
|
||||
// Apply those preferences.
|
||||
result = m_pDefaultBrowser->HandlePerPreferences();
|
||||
assert( result == NS_OK );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -65,20 +101,46 @@ LRESULT CBasicWindowsPrefs::WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
class CWinPrefDialog : public CDialog {
|
||||
public:
|
||||
CWinPrefDialog( int id );
|
||||
CWinPrefDialog( int id, nsIDefaultBrowser::Prefs &prefs );
|
||||
|
||||
protected:
|
||||
BOOL InitDialog() { return TRUE; }
|
||||
BOOL DoTransfer(BOOL bSaveAndValidate) { return TRUE; }
|
||||
BOOL DoTransfer(BOOL bSaveAndValidate);
|
||||
|
||||
// Event processing
|
||||
void OnOK() { return; }
|
||||
|
||||
private:
|
||||
nsIDefaultBrowser::Prefs &m_prefs;
|
||||
};
|
||||
|
||||
CWinPrefDialog::CWinPrefDialog( int id )
|
||||
: CDialog( CComDll::m_hInstance, id ) {
|
||||
CWinPrefDialog::CWinPrefDialog( int id, nsIDefaultBrowser::Prefs &prefs )
|
||||
: CDialog( CComDll::m_hInstance, id ), m_prefs( prefs ) {
|
||||
}
|
||||
|
||||
CWinPrefDialog::DoTransfer( BOOL bSaveAndValidate ) {
|
||||
switch( m_nTemplateID ) {
|
||||
case IDD_WINFILETYPES:
|
||||
CheckBoxTransfer( IDC_HANDLEHTML, m_prefs.bHandleHTML, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLEJPEG, m_prefs.bHandleJPEG, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLEGIF, m_prefs.bHandleGIF, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLEJS, m_prefs.bHandleJS, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLEXBM, m_prefs.bHandleXBM, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLETXT, m_prefs.bHandleTXT, bSaveAndValidate );
|
||||
break;
|
||||
|
||||
case IDD_WINSHORTCUTTYPES:
|
||||
CheckBoxTransfer( IDC_HANDLEHTTP, m_prefs.bHandleHTTP, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLESHTTP, m_prefs.bHandleHTTPS, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_HANDLEFTP, m_prefs.bHandleFTP, bSaveAndValidate );
|
||||
break;
|
||||
|
||||
case IDD_WINACTIVEDESKTOPSETTINGS:
|
||||
CheckBoxTransfer( IDC_USEINTERNETKEYWORDS, m_prefs.bUseInternetKeywords, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_USENETCENTERSEARCH, m_prefs.bUseNetcenterSearch, bSaveAndValidate );
|
||||
CheckBoxTransfer( IDC_DISABLEACTIVEDESKTOP, m_prefs.bDisableActiveDesktop, bSaveAndValidate );
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CBasicWindowsPrefs::OnCommand(int id, HWND hwndCtl, UINT notifyCode)
|
||||
@@ -90,7 +152,7 @@ BOOL CBasicWindowsPrefs::OnCommand(int id, HWND hwndCtl, UINT notifyCode)
|
||||
case IDD_WINSHORTCUTTYPES:
|
||||
case IDD_WINACTIVEDESKTOPSETTINGS:
|
||||
{
|
||||
CWinPrefDialog dialog( id );
|
||||
CWinPrefDialog dialog( id, m_currentPrefs );
|
||||
dialog.DoModal(GetParent(m_hwndDlg));
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "wprefid.h"
|
||||
#include "prefuiid.h"
|
||||
#include "isppageo.h"
|
||||
#include "nsIDefaultBrowser.h"
|
||||
#include <assert.h>
|
||||
|
||||
// Create a new instance of our derived class and return it.
|
||||
@@ -35,7 +36,7 @@ DLL_ConsumerCreateInstance()
|
||||
// CSpecifyPropertyPageObjects
|
||||
|
||||
// Abstract class that supports aggregation as an inner object
|
||||
class CCategory : public IUnknown {
|
||||
class CCategory : public IWindowsPrefs {
|
||||
public:
|
||||
CCategory();
|
||||
|
||||
@@ -44,6 +45,9 @@ class CCategory : public IUnknown {
|
||||
STDMETHODIMP_(ULONG) AddRef();
|
||||
STDMETHODIMP_(ULONG) Release();
|
||||
|
||||
// IWindowsPrefs methods.
|
||||
STDMETHODIMP SetDefaultBrowser(nsIDefaultBrowser* pDefaultBrowser) PURE;
|
||||
|
||||
public:
|
||||
// Abstract nested class that implements ISpecifyPropertyPageObjects
|
||||
class CSpecifyPageObjects : public ISpecifyPropertyPageObjects {
|
||||
@@ -136,27 +140,42 @@ CCategory::CSpecifyPageObjects::Release()
|
||||
class CWindowsCategory : public CCategory {
|
||||
public:
|
||||
CWindowsCategory(LPUNKNOWN pUnkOuter);
|
||||
~CWindowsCategory();
|
||||
|
||||
// IUnknown methods. Doesn't delegate (explicit IUnknown)
|
||||
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj);
|
||||
|
||||
// IwindowsPrefs methods.
|
||||
STDMETHODIMP SetDefaultBrowser(nsIDefaultBrowser* pDefaultBrowser);
|
||||
|
||||
private:
|
||||
class CSpecifyWindowsPageObjects : public CCategory::CSpecifyPageObjects {
|
||||
public:
|
||||
CSpecifyWindowsPageObjects(CCategory *pBackObj, LPUNKNOWN pUnkOuter);
|
||||
~CSpecifyWindowsPageObjects();
|
||||
|
||||
// ISpecifyPropertyPageObjects methods
|
||||
STDMETHODIMP GetPageObjects(CAPPAGE *pPages);
|
||||
|
||||
// nsIDefaultBrowser interface pointer.
|
||||
nsIDefaultBrowser* m_pDefaultBrowser;
|
||||
};
|
||||
|
||||
CSpecifyWindowsPageObjects m_innerObj;
|
||||
nsIDefaultBrowser* m_pDefaultBrowser;
|
||||
};
|
||||
|
||||
CWindowsCategory::CWindowsCategory(LPUNKNOWN pUnkOuter)
|
||||
: m_innerObj(this, pUnkOuter)
|
||||
: m_innerObj(this, pUnkOuter), m_pDefaultBrowser(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
CWindowsCategory::~CWindowsCategory() {
|
||||
if ( m_pDefaultBrowser ) {
|
||||
m_pDefaultBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
CWindowsCategory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
|
||||
{
|
||||
@@ -164,6 +183,11 @@ CWindowsCategory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
|
||||
*ppvObj = (LPVOID)this;
|
||||
AddRef();
|
||||
return NOERROR;
|
||||
|
||||
} else if (riid == IID_IWindowsPrefs) {
|
||||
*ppvObj = (LPVOID)(IWindowsPrefs*)this;
|
||||
AddRef();
|
||||
return NOERROR;
|
||||
|
||||
} else if (riid == IID_ISpecifyPropertyPageObjects) {
|
||||
*ppvObj = (LPVOID)&m_innerObj;
|
||||
@@ -176,11 +200,30 @@ CWindowsCategory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
|
||||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
CWindowsCategory::SetDefaultBrowser(nsIDefaultBrowser* pDefaultBrowser) {
|
||||
m_pDefaultBrowser = pDefaultBrowser;
|
||||
if ( m_pDefaultBrowser ) {
|
||||
// Once for me.
|
||||
m_pDefaultBrowser->AddRef();
|
||||
// Once for my inner 'self'.
|
||||
m_innerObj.m_pDefaultBrowser = m_pDefaultBrowser;
|
||||
m_innerObj.m_pDefaultBrowser->AddRef();
|
||||
}
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
CWindowsCategory::CSpecifyWindowsPageObjects::CSpecifyWindowsPageObjects(CCategory *pBackObj, LPUNKNOWN pUnkOuter)
|
||||
: CSpecifyPageObjects(pBackObj, pUnkOuter)
|
||||
: CSpecifyPageObjects(pBackObj, pUnkOuter), m_pDefaultBrowser(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
CWindowsCategory::CSpecifyWindowsPageObjects::~CSpecifyWindowsPageObjects() {
|
||||
if ( m_pDefaultBrowser ) {
|
||||
m_pDefaultBrowser->Release();
|
||||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
CWindowsCategory::CSpecifyWindowsPageObjects::GetPageObjects(CAPPAGE *pPages)
|
||||
{
|
||||
@@ -192,7 +235,9 @@ CWindowsCategory::CSpecifyWindowsPageObjects::GetPageObjects(CAPPAGE *pPages)
|
||||
if (!pPages->pElems)
|
||||
return ResultFromScode(E_OUTOFMEMORY);
|
||||
|
||||
pPages->pElems[0] = new CBasicWindowsPrefs;
|
||||
assert( m_pDefaultBrowser );
|
||||
|
||||
pPages->pElems[0] = new CBasicWindowsPrefs(m_pDefaultBrowser);
|
||||
|
||||
for (ULONG i = 0; i < pPages->cElems; i++)
|
||||
pPages->pElems[i]->AddRef();
|
||||
|
||||
Reference in New Issue
Block a user