//---------------------------------------------------------------------------- // // 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 ); }