653 lines
15 KiB
C
653 lines
15 KiB
C
//----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
|
// All rights reserved.
|
|
//
|
|
// File Name:
|
|
// iebrowse.c
|
|
//
|
|
// Description:
|
|
// This file contains the dialog procedures for the IE browser settings
|
|
// pop-ups.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include "pch.h"
|
|
#include "resource.h"
|
|
|
|
#define MAX_FAVORITE_LEN 1024
|
|
|
|
static TCHAR *StrFriendlyName;
|
|
static TCHAR *StrUrl;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: InsertEntryIntoFavorites
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments:
|
|
//
|
|
// Returns: TRUE if the item was added,
|
|
// FALSE if it was not
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static BOOL
|
|
InsertEntryIntoFavorites( IN HWND hwnd, TCHAR *pszFriendlyName, TCHAR *pszURL )
|
|
{
|
|
|
|
LVITEM LvItem;
|
|
HWND hFavorites;
|
|
INT iPosition;
|
|
BOOL bSuccess = TRUE;
|
|
|
|
hFavorites = GetDlgItem( hwnd, IDC_LV_FAVORITES );
|
|
|
|
iPosition = ListView_GetItemCount( hFavorites );
|
|
|
|
ZeroMemory( &LvItem, sizeof(LVITEM) );
|
|
|
|
LvItem.mask = LVIF_TEXT;
|
|
|
|
LvItem.iItem = iPosition;
|
|
LvItem.iSubItem = 0;
|
|
LvItem.pszText = pszFriendlyName;
|
|
LvItem.cchTextMax = MAX_FAVORITE_LEN;
|
|
|
|
//
|
|
// if ListView_InsertItem returns a non-negative value then it succeeded
|
|
//
|
|
|
|
if( ListView_InsertItem( hFavorites, &LvItem ) < 0 )
|
|
{
|
|
bSuccess = FALSE;
|
|
}
|
|
|
|
ListView_SetItemText( hFavorites, iPosition, 1, pszURL );
|
|
|
|
return( bSuccess );
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: OnInitFavoritesDialog
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
OnInitFavoritesDialog( IN HWND hwnd )
|
|
{
|
|
|
|
RECT rect;
|
|
INT iColWidth;
|
|
INT iRetVal;
|
|
INT iIndex;
|
|
INT iEntries;
|
|
LV_COLUMN lvCol;
|
|
TCHAR *pFriendlyName;
|
|
TCHAR *pUrl;
|
|
HWND hFavoritesListView;
|
|
INT iCount = 0;
|
|
|
|
//
|
|
// Set the text limit on the edit boxes
|
|
//
|
|
|
|
SendDlgItemMessage( hwnd,
|
|
IDC_EB_FRIENDLYNAME,
|
|
EM_LIMITTEXT,
|
|
(WPARAM) MAX_FAVORITE_LEN,
|
|
(LPARAM) 0 );
|
|
|
|
SendDlgItemMessage( hwnd,
|
|
IDC_EB_URL,
|
|
EM_LIMITTEXT,
|
|
(WPARAM) MAX_FAVORITE_LEN,
|
|
(LPARAM) 0 );
|
|
|
|
//
|
|
// Initialize the list box
|
|
//
|
|
|
|
StrFriendlyName = MyLoadString( IDS_FRIENDLY_NAME );
|
|
|
|
StrUrl = MyLoadString( IDS_URL );
|
|
|
|
|
|
hFavoritesListView = GetDlgItem( hwnd, IDC_LV_FAVORITES );
|
|
|
|
GetClientRect( hFavoritesListView, &rect );
|
|
|
|
iColWidth = ( rect.right / 2 );
|
|
|
|
ListView_SetColumnWidth( hFavoritesListView, 0, iColWidth );
|
|
|
|
ListView_SetColumnWidth( hFavoritesListView, 1, iColWidth );
|
|
|
|
|
|
|
|
lvCol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
|
|
lvCol.fmt = LVCFMT_LEFT;
|
|
lvCol.cx = iColWidth;
|
|
|
|
//
|
|
// Add the two columns and header text
|
|
//
|
|
|
|
for( iIndex = 0; iIndex < 2; iIndex++ ) {
|
|
|
|
if ( iIndex == 0 )
|
|
lvCol.pszText = (LPTSTR) StrFriendlyName;
|
|
else
|
|
lvCol.pszText = (LPTSTR) StrUrl;
|
|
|
|
iRetVal = ListView_InsertColumn( hFavoritesListView, iIndex, &lvCol );
|
|
|
|
if( iRetVal == -1 )
|
|
{
|
|
// ISSUE-2002/02/28-stelo- we got a problem if we get here, can't make the column headers
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
// Populate the favorites dialog
|
|
//
|
|
|
|
iEntries = GetNameListSize( &GenSettings.Favorites );
|
|
|
|
for( iIndex = 0; iIndex < iEntries; iIndex = iIndex + 2 )
|
|
{
|
|
|
|
pFriendlyName = GetNameListName( &GenSettings.Favorites, iIndex );
|
|
|
|
pUrl = GetNameListName( &GenSettings.Favorites, iIndex + 1 );
|
|
|
|
if( *pFriendlyName != _T('\0') && *pUrl != _T('\0') )
|
|
{
|
|
InsertEntryIntoFavorites( hwnd, pFriendlyName, pUrl );
|
|
}
|
|
|
|
}
|
|
|
|
iCount = ListView_GetItemCount( hFavoritesListView );
|
|
|
|
if( iCount > 0 )
|
|
{
|
|
EnableWindow( GetDlgItem( hwnd, IDC_BUT_REMOVE ), TRUE );
|
|
}
|
|
else
|
|
{
|
|
EnableWindow( GetDlgItem( hwnd, IDC_BUT_REMOVE ), FALSE );
|
|
}
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: OnAddFavorites
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
OnAddFavorites( IN HWND hwnd )
|
|
{
|
|
|
|
TCHAR szFriendlyName[MAX_FAVORITE_LEN + 1];
|
|
TCHAR szURL[MAX_FAVORITE_LEN + 1];
|
|
|
|
GetWindowText( GetDlgItem( hwnd, IDC_EB_FRIENDLYNAME ),
|
|
szFriendlyName,
|
|
MAX_FAVORITE_LEN + 1 );
|
|
|
|
GetWindowText( GetDlgItem( hwnd, IDC_EB_URL ),
|
|
szURL,
|
|
MAX_FAVORITE_LEN + 1 );
|
|
|
|
if( lstrcmp( szFriendlyName, _T("") ) == 0)
|
|
{
|
|
ReportErrorId( hwnd,
|
|
MSGTYPE_ERR,
|
|
IDS_ERR_FRIENDLY_NAME_BLANK );
|
|
|
|
return;
|
|
}
|
|
else if( lstrcmp( szURL, _T("") ) == 0)
|
|
{
|
|
ReportErrorId( hwnd,
|
|
MSGTYPE_ERR,
|
|
IDS_ERR_URL_BLANK );
|
|
|
|
return;
|
|
}
|
|
|
|
if( InsertEntryIntoFavorites( hwnd, szFriendlyName, szURL ) )
|
|
{
|
|
SetWindowText( GetDlgItem( hwnd, IDC_EB_FRIENDLYNAME ),
|
|
_T("") );
|
|
|
|
SetWindowText( GetDlgItem( hwnd, IDC_EB_URL ),
|
|
_T("") );
|
|
|
|
EnableWindow( GetDlgItem( hwnd, IDC_BUT_REMOVE ), TRUE );
|
|
}
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: OnRemoveFavorites
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
OnRemoveFavorites( IN HWND hwnd )
|
|
{
|
|
|
|
HWND hFavorites;
|
|
INT iSelectedItem;
|
|
INT iCount;
|
|
|
|
hFavorites = GetDlgItem( hwnd, IDC_LV_FAVORITES );
|
|
|
|
iSelectedItem = ListView_GetSelectionMark( hFavorites );
|
|
|
|
//
|
|
// see if nothing was selected
|
|
//
|
|
|
|
if( iSelectedItem == -1 )
|
|
{
|
|
return;
|
|
}
|
|
|
|
ListView_DeleteItem( hFavorites, iSelectedItem );
|
|
|
|
//
|
|
// Set the state of the remove button appropriately
|
|
//
|
|
|
|
iCount = ListView_GetItemCount( hFavorites );
|
|
|
|
if( iCount > 0 )
|
|
{
|
|
EnableWindow( GetDlgItem( hwnd, IDC_BUT_REMOVE ), TRUE );
|
|
}
|
|
else
|
|
{
|
|
EnableWindow( GetDlgItem( hwnd, IDC_BUT_REMOVE ), FALSE );
|
|
}
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: StoreFavorites
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
StoreFavorites( IN HWND hwnd )
|
|
{
|
|
|
|
INT i;
|
|
INT iEntries;
|
|
LVITEM FriendlyNameItem;
|
|
LVITEM UrlItem;
|
|
HWND hFavorites;
|
|
TCHAR szFriendlyName[MAX_FAVORITE_LEN + 1];
|
|
TCHAR szURL[MAX_FAVORITE_LEN + 1];
|
|
|
|
hFavorites = GetDlgItem( hwnd, IDC_LV_FAVORITES );
|
|
|
|
ZeroMemory( &FriendlyNameItem, sizeof(LVITEM) );
|
|
ZeroMemory( &UrlItem, sizeof(LVITEM) );
|
|
|
|
ResetNameList( &GenSettings.Favorites );
|
|
|
|
FriendlyNameItem.mask = LVIF_TEXT;
|
|
FriendlyNameItem.pszText = szFriendlyName;
|
|
FriendlyNameItem.cchTextMax = MAX_FAVORITE_LEN;
|
|
FriendlyNameItem.iSubItem = 0;
|
|
|
|
UrlItem.mask = LVIF_TEXT;
|
|
UrlItem.pszText = szURL;
|
|
UrlItem.cchTextMax = MAX_FAVORITE_LEN;
|
|
UrlItem.iSubItem = 1;
|
|
|
|
iEntries = ListView_GetItemCount( hFavorites );
|
|
|
|
for( i = 0; i < iEntries; i++ )
|
|
{
|
|
|
|
FriendlyNameItem.iItem = i;
|
|
UrlItem.iItem = i;
|
|
|
|
if( ListView_GetItem( hFavorites, &FriendlyNameItem ) &&
|
|
ListView_GetItem( hFavorites, &UrlItem ) )
|
|
{
|
|
|
|
if( szFriendlyName[0] != _T('\0') && szURL[0] != _T('\0') )
|
|
{
|
|
AddNameToNameList( &GenSettings.Favorites,
|
|
szFriendlyName );
|
|
|
|
AddNameToNameList( &GenSettings.Favorites,
|
|
szURL );
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: FavoritesDlg
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: standard Win32 dialog proc arguments
|
|
//
|
|
// Returns: standard Win32 dialog proc return value -- whether the message
|
|
// was handled or not
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
INT_PTR CALLBACK FavoritesDlg(
|
|
IN HWND hwnd,
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam )
|
|
{
|
|
BOOL bStatus = TRUE;
|
|
|
|
switch (uMsg) {
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
OnInitFavoritesDialog( hwnd );
|
|
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
int nButtonId;
|
|
|
|
switch ( nButtonId = LOWORD(wParam) )
|
|
{
|
|
|
|
case IDOK:
|
|
|
|
// ISSUE-2002/02/28-stelo- do I need to validate proxy addresses?
|
|
if( HIWORD( wParam ) == BN_CLICKED ) {
|
|
|
|
StoreFavorites( hwnd );
|
|
|
|
EndDialog( hwnd, TRUE );
|
|
|
|
}
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
if( HIWORD( wParam ) == BN_CLICKED ) {
|
|
EndDialog( hwnd, FALSE );
|
|
}
|
|
break;
|
|
|
|
case IDC_BUT_ADD:
|
|
if( HIWORD( wParam ) == BN_CLICKED ) {
|
|
OnAddFavorites( hwnd );
|
|
}
|
|
break;
|
|
|
|
case IDC_BUT_REMOVE:
|
|
if( HIWORD( wParam ) == BN_CLICKED ) {
|
|
OnRemoveFavorites( hwnd );
|
|
}
|
|
break;
|
|
|
|
default:
|
|
bStatus = FALSE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
bStatus = FALSE;
|
|
break;
|
|
}
|
|
|
|
return( bStatus );
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: OnInitBrowserSettingsDialog
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
OnInitBrowserSettingsDialog( IN HWND hwnd )
|
|
{
|
|
|
|
//
|
|
// Set the text limit on the edit boxes
|
|
//
|
|
|
|
SendDlgItemMessage( hwnd,
|
|
IDC_EB_HOMEPAGE,
|
|
EM_LIMITTEXT,
|
|
(WPARAM) MAX_HOMEPAGE_LEN,
|
|
(LPARAM) 0 );
|
|
|
|
SendDlgItemMessage( hwnd,
|
|
IDC_EB_HELPPAGE,
|
|
EM_LIMITTEXT,
|
|
(WPARAM) MAX_HELPPAGE_LEN,
|
|
(LPARAM) 0 );
|
|
|
|
SendDlgItemMessage( hwnd,
|
|
IDC_EB_SEARCHPAGE,
|
|
EM_LIMITTEXT,
|
|
(WPARAM) MAX_SEARCHPAGE_LEN,
|
|
(LPARAM) 0 );
|
|
|
|
//
|
|
// Set the initial values
|
|
//
|
|
|
|
SetWindowText( GetDlgItem( hwnd, IDC_EB_HOMEPAGE ),
|
|
GenSettings.szHomePage );
|
|
|
|
SetWindowText( GetDlgItem( hwnd, IDC_EB_HELPPAGE ),
|
|
GenSettings.szHelpPage );
|
|
|
|
SetWindowText( GetDlgItem( hwnd, IDC_EB_SEARCHPAGE ),
|
|
GenSettings.szSearchPage );
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: OnDestroyBrowserSettings
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
OnDestroyBrowserSettings( IN HWND hwnd )
|
|
{
|
|
|
|
//
|
|
// Free the strings that were allocated for this page
|
|
//
|
|
|
|
free( StrFriendlyName );
|
|
|
|
free( StrUrl );
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: StoreBrowserSettings
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
StoreBrowserSettings( IN HWND hwnd )
|
|
{
|
|
|
|
GetWindowText( GetDlgItem( hwnd, IDC_EB_HOMEPAGE ),
|
|
GenSettings.szHomePage,
|
|
MAX_HOMEPAGE_LEN + 1 );
|
|
|
|
GetWindowText( GetDlgItem( hwnd, IDC_EB_HELPPAGE ),
|
|
GenSettings.szHelpPage,
|
|
MAX_HELPPAGE_LEN + 1 );
|
|
|
|
GetWindowText( GetDlgItem( hwnd, IDC_EB_SEARCHPAGE ),
|
|
GenSettings.szSearchPage,
|
|
MAX_SEARCHPAGE_LEN + 1 );
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: OnAddFavoritesClicked
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: IN HWND hwnd - handle to the dialog box
|
|
//
|
|
// Returns: VOID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
static VOID
|
|
OnAddFavoritesClicked( IN HWND hwnd )
|
|
{
|
|
|
|
DialogBox( FixedGlobals.hInstance,
|
|
MAKEINTRESOURCE(IDD_IE_FAVORITES),
|
|
hwnd,
|
|
FavoritesDlg );
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: BrowserSettingsDlg
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Arguments: standard Win32 dialog proc arguments
|
|
//
|
|
// Returns: standard Win32 dialog proc return value -- whether the message
|
|
// was handled or not
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
INT_PTR CALLBACK BrowserSettingsDlg(
|
|
IN HWND hwnd,
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam )
|
|
{
|
|
BOOL bStatus = TRUE;
|
|
|
|
switch (uMsg) {
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
OnInitBrowserSettingsDialog( hwnd );
|
|
|
|
break;
|
|
|
|
case WM_DESTROY:
|
|
|
|
OnDestroyBrowserSettings( hwnd );
|
|
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
int nButtonId;
|
|
|
|
switch ( nButtonId = LOWORD(wParam) )
|
|
{
|
|
|
|
case IDOK:
|
|
// ISSUE-2002/02/28-stelo- do I need to validate proxy addresses?
|
|
if( HIWORD( wParam ) == BN_CLICKED ) {
|
|
|
|
StoreBrowserSettings( hwnd );
|
|
|
|
EndDialog( hwnd, TRUE );
|
|
}
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
if( HIWORD( wParam ) == BN_CLICKED ) {
|
|
EndDialog( hwnd, FALSE );
|
|
}
|
|
break;
|
|
|
|
case IDC_BUT_FAVORITES:
|
|
if( HIWORD(wParam) == BN_CLICKED )
|
|
OnAddFavoritesClicked( hwnd );
|
|
break;
|
|
|
|
default:
|
|
bStatus = FALSE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
bStatus = FALSE;
|
|
break;
|
|
}
|
|
|
|
return( bStatus );
|
|
|
|
} |