Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

778 lines
23 KiB

/***************************************************************************
*
* File Name: advsetup.c
*
* Copyright (C) 1993-1996 Hewlett-Packard Company.
* All rights reserved.
*
* 11311 Chinden Blvd.
* Boise, Idaho 83714
*
* This is a part of the HP JetAdmin Printer Utility
*
* This source code is only intended as a supplement for support and
* localization of HP JetAdmin by 3rd party Operating System vendors.
* Modification of source code cannot be made without the express written
* consent of Hewlett-Packard.
*
*
* Description:
*
* Author: Name
*
*
* Modification history:
*
* date initials change description
*
* 02-17-96 DJH Created.
*
*
*
*
*
*
***************************************************************************/
#include <pch_c.h>
#include <macros.h>
#include <string.h>
#include "advsetup.h"
#include ".\help\hpprntr.hh" // for help contexts
#include "resource.h"
#include "uimisc.h"
#include <nolocal.h>
#ifndef WIN32
#include <winuse16.h>
#endif
HWND hSetup;
HWND hTimeoutTitle = NULL;
HWND hPersonality = NULL;
HWND hLanguage = NULL;
HWND hTrackbarTimeout = NULL;
BOOL bTimeoutChanged = FALSE;
#ifdef WIN32
int keywordIDListAdvSetup[] =
#else
long keywordIDListAdvSetup[] =
#endif
{IDC_PERSONALITY_LABEL, IDH_RC_advanced_personality,
IDC_PERSONALITY_ICON, IDH_RC_advanced_personality,
IDC_PERSONALITY, IDH_RC_advanced_personality,
IDC_ASSET, IDH_RC_asset_number,
IDC_ASSET_ICON, IDH_RC_asset_number,
IDC_ASSET_LABEL, IDH_RC_asset_number,
IDC_LANGUAGE, IDH_RC_advanced_language,
IDC_LANGUAGE_LABEL, IDH_RC_advanced_language,
IDC_LANGUAGE_ICON, IDH_RC_advanced_language,
IDC_TIMEOUT_GROUP, IDH_RC_advanced_timeout,
IDC_TIMEOUT, IDH_RC_advanced_timeout,
IDC_TIMEOUT_HIGH, IDH_RC_advanced_timeout,
IDC_TIMEOUT_LOW, IDH_RC_advanced_timeout,
IDC_TIMEOUT_TITLE, IDH_RC_advanced_timeout,
IDC_TRACKBAR_TIMEOUT, IDH_RC_advanced_timeout,
0, 0};
//globals==================================================
extern HINSTANCE hInstance;
extern HPERIPHERAL hPeripheral;
extern PJLSupportedObjects pjlFeatures;
extern PJLobjects oldSettings,
newSettings;
//CONSTANTS================================================
#define MAX_TIMEOUT 300
#define MIN_TIMEOUT 5
#define MAX_DENSITY 5
#define MIN_DENSITY 1
//=========================================================
// Advanced Sheet Dialog Proc
DLL_EXPORT(BOOL) APIENTRY AdvSetupSheetProc(HWND hwnd, UINT msg, UINT wParam, LONG lParam)
{
BOOL *pChanged = (BOOL *)lParam,
bProcessed = FALSE;
#ifdef WIN32
LONG pos;
#else
int pos;
#endif
switch (msg)
{
// TrackBar Messages
case WM_HSCROLL:
switch(LOWORD(wParam))
{
#ifdef WIN32
case TB_LINEUP:
pos = SendMessage(hTrackbarTimeout, TBM_GETPOS, (WPARAM)0, (LPARAM)0);
if ( pos > 15 )
{
pos -= 14;
SendMessage(hTrackbarTimeout, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pos);
SetTextField(pos);
bTimeoutChanged = TRUE;
}
break;
case TB_LINEDOWN:
pos = SendMessage(hTrackbarTimeout, TBM_GETPOS, (WPARAM)0, (LPARAM)0);
if ( pos < 300 )
{
pos += 14;
SendMessage(hTrackbarTimeout, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pos);
SetTextField(pos);
bTimeoutChanged = TRUE;
}
break;
case TB_PAGEUP:
case TB_PAGEDOWN:
pos = SendMessage(hTrackbarTimeout, TBM_GETPOS, (WPARAM)0, (LPARAM)0);
SetTextField(pos);
bTimeoutChanged = TRUE;
break;
case TB_THUMBTRACK:
break;
case TB_THUMBPOSITION:
case TB_ENDTRACK:
pos = SendMessage(hTrackbarTimeout, TBM_GETPOS, (WPARAM)0, (LPARAM)0);
if ( ( ( pos + 7 ) / 15 ) > ( pos / 15 ) )
{ // Over half-way to the next tic
pos = ( ( pos + 7 ) / 15 ) * 15;
SendMessage(hTrackbarTimeout, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pos);
}
else
{
pos = ( pos / 15 ) * 15;
SendMessage(hTrackbarTimeout, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)pos);
}
SetTextField(pos);
bTimeoutChanged = TRUE;
break;
case TB_TOP:
case TB_BOTTOM:
pos = SendMessage(hTrackbarTimeout, TBM_GETPOS, (WPARAM)0, (LPARAM)0);
SetTextField(pos);
bTimeoutChanged = TRUE;
break;
#else
case SB_LINEUP:
case SB_PAGEUP:
pos = GetScrollPos(hTrackbarTimeout, SB_CTL);
if ( pos > 15 )
{
pos -= 15;
SetScrollPos(hTrackbarTimeout, SB_CTL, pos, TRUE);
SetTextField(pos);
bTimeoutChanged = TRUE;
}
break;
case SB_LINEDOWN:
case SB_PAGEDOWN:
pos = GetScrollPos(hTrackbarTimeout, SB_CTL);
if ( pos < 300 )
{
pos += 15;
SetScrollPos(hTrackbarTimeout, SB_CTL, pos, TRUE);
SetTextField(pos);
bTimeoutChanged = TRUE;
}
break;
case SB_THUMBPOSITION:
pos = LOWORD(lParam);
if ( ( ( pos + 7 ) / 15 ) > ( pos / 15 ) )
{ // Over half-way to the next tic
pos = ( ( pos + 7 ) / 15 ) * 15;
SetScrollPos(hTrackbarTimeout, SB_CTL, pos, TRUE);
}
else
{
pos = ( pos / 15 ) * 15;
SetScrollPos(hTrackbarTimeout, SB_CTL, pos, TRUE);
}
SetTextField(pos);
bTimeoutChanged = TRUE;
break;
case SB_TOP:
SetScrollPos(hTrackbarTimeout, SB_CTL, 300, TRUE);
SetTextField(300);
bTimeoutChanged = TRUE;
break;
case SB_BOTTOM:
SetScrollPos(hTrackbarTimeout, SB_CTL, 15, TRUE);
SetTextField(15);
bTimeoutChanged = TRUE;
break;
#endif
}
break;
#ifdef WIN32
case WM_HELP:
return((BOOL)OnF1HelpAdvSetup(wParam, lParam));
break;
case WM_CONTEXTMENU:
return((BOOL)OnContextHelpAdvSetup(wParam, lParam));
break;
case WM_NOTIFY:
switch (((NMHDR FAR *)lParam)->code)
{
case PSN_HELP:
WinHelp(hwnd, PRINTER_HELP_FILE, HELP_CONTEXT, IDH_PP_advanced);
break;
case PSN_SETACTIVE:
bProcessed = TRUE;
SetWindowLong(hwnd, DWL_MSGRESULT, FALSE);
break;
case PSN_KILLACTIVE:
bProcessed = TRUE;
SetWindowLong(hwnd, DWL_MSGRESULT, FALSE);
break;
case PSN_APPLY:
bProcessed = TRUE;
SaveAdvSetupValues();
SetWindowLong(hwnd, DWL_MSGRESULT, PSNRET_NOERROR);
break;
case PSN_RESET:
break;
default:
break;
}
break;
#else
// TabSheet Specific Messages
case TSN_ACTIVE:
case TSN_CANCEL:
bProcessed = TRUE;
break;
case TSN_INACTIVE:
bProcessed = TRUE;
*pChanged = TRUE;
break;
case TSN_OK:
case TSN_APPLY_NOW:
*pChanged = TRUE;
SaveAdvSetupValues();
break;
case TSN_HELP:
WinHelp(hwnd, PRINTER_HELP_FILE, HELP_CONTEXT, IDH_PP_advanced);
break;
#endif
case WM_COMMAND:
HANDLE_WM_COMMAND( hwnd, wParam, lParam, Cls_OnAdvSetupCommand);
break;
case WM_INITDIALOG:
{
HCURSOR hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
bProcessed = (BOOL)HANDLE_WM_INITDIALOG( hwnd, wParam, lParam, Cls_OnAdvSetupInitDialog);
SetCursor(hCursor);
}
break;
case WM_DESTROY:
// if ( hTrackbarTimeout )
// DestroyWindow(hTrackbarTimeout);
break;
}
return (bProcessed);
}
//---------------------------------------------------------
// message cracking macros
//.........................................................
void Cls_OnAdvSetupCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
//WM_COMMAND handler
{
int index,
dwItem;
switch(codeNotify)
{
case EN_UPDATE:
if ( id IS IDC_ASSET )
{
ValidateString(hwndCtl, 8);
}
break;
case CBN_SELCHANGE:
if ( id IS IDC_PERSONALITY )
{
index = (int)SendMessage(hwndCtl, CB_GETCURSEL, 0, 0L);
dwItem = (int)SendMessage(hwndCtl, CB_GETITEMDATA, (WPARAM)index, 0L);
if ( dwItem IS PJL_PCL )
SetNewIcon(hwnd, IDC_PERSONALITY_ICON, IDI_PERSONALITY_PCL);
else if ( dwItem IS PJL_POSTSCRIPT )
SetNewIcon(hwnd, IDC_PERSONALITY_ICON, IDI_PERSONALITY_PS);
else if ( dwItem IS PJL_AUTO )
SetNewIcon(hwnd, IDC_PERSONALITY_ICON, IDI_PERSONALITY);
else
SetNewIcon(hwnd, IDC_PERSONALITY_ICON, IDI_PERSONALITY_DEF);
}
else if ( id IS IDC_LANGUAGE )
{
index = (int)SendMessage(hwndCtl, CB_GETCURSEL, 0, 0L);
dwItem = (int)SendMessage(hwndCtl, CB_GETITEMDATA, (WPARAM)index, 0L);
if ( dwItem IS 0 )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_DEF);
else if ( dwItem IS PJL_DANISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_DANISH);
else if ( dwItem IS PJL_DUTCH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_DUTCH);
else if ( dwItem IS PJL_ENGLISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_ENGLISH);
else if ( dwItem IS PJL_ENGLISH_UK )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_UK);
else if ( dwItem IS PJL_FINNISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_FINNISH);
else if ( dwItem IS PJL_FRENCH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_FRENCH);
else if ( dwItem IS PJL_CANADA )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_CANADA);
else if ( dwItem IS PJL_GERMAN )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_GERMAN);
else if ( dwItem IS PJL_ITALIAN )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_ITALIAN);
else if ( dwItem IS PJL_NORWEGIAN )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_NORWEGIAN);
else if ( dwItem IS PJL_POLISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_POLISH);
else if ( dwItem IS PJL_PORTUGUESE )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_PORTUGUESE);
else if ( dwItem IS PJL_SPANISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_SPANISH);
else if ( dwItem IS PJL_MEXICO )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_MEXICO);
else if ( dwItem IS PJL_SWEDISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_SWEDISH);
else if ( dwItem IS PJL_TURKISH )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_TURKISH);
else if ( dwItem IS PJL_JAPANESE )
SetNewIcon(hwnd, IDC_LANGUAGE_ICON, IDI_LANGUAGE_JAPAN);
}
break;
default:
;
}
}
//.........................................................
BOOL Cls_OnAdvSetupInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
//WM_INITDIALOG handler
{
hSetup = hwnd;
hTrackbarTimeout = GetDlgItem(hSetup, IDC_TIMEOUT);
hTimeoutTitle = GetDlgItem(hSetup, IDC_TIMEOUT_TITLE);
hPersonality = GetDlgItem(hSetup, IDC_PERSONALITY);
hLanguage = GetDlgItem(hSetup, IDC_LANGUAGE);
OnInitAdvSetupDialog();
return TRUE;
}
#define NUM_LANGUAGE_RES 18
#define NUM_PERSONALITY_RES 4
//.........................................................
BOOL OnInitAdvSetupDialog(void)
{
TCHAR buffer[512];
int index = -1,
dwItem,
range;
DWORD dwResult,
dWord,
i;
PeripheralAcct periphAcct;
DWORD personalityRes[NUM_PERSONALITY_RES][3] = {{IDS_PCL, PJL_PCL, SETTING_PCL},
{IDS_POSTSCRIPT, PJL_POSTSCRIPT, SETTING_PS},
{IDS_AUTO, PJL_AUTO, SETTING_AUTO},
{IDS_USE_DEFAULT, 0, SETTING_SUPPORTED}},
languageRes[NUM_LANGUAGE_RES][3] = {{IDS_DANISH, PJL_DANISH, SETTING_DANISH},
{IDS_GERMAN, PJL_GERMAN, SETTING_GERMAN},
{IDS_ENGLISH, PJL_ENGLISH, SETTING_ENGLISH},
{IDS_ENGLISH_UK, PJL_ENGLISH_UK, SETTING_ENGLISH_UK},
{IDS_SPANISH, PJL_SPANISH, SETTING_SPANISH},
{IDS_MEXICO, PJL_MEXICO, SETTING_MEXICO},
{IDS_FRENCH, PJL_FRENCH, SETTING_FRENCH},
{IDS_CANADA, PJL_CANADA, SETTING_CANADA},
{IDS_ITALIAN, PJL_ITALIAN, SETTING_ITALIAN},
{IDS_DUTCH, PJL_DUTCH, SETTING_DUTCH},
{IDS_NORWEGIAN, PJL_NORWEGIAN, SETTING_NORWEGIAN},
{IDS_POLISH, PJL_POLISH, SETTING_POLISH},
{IDS_PORTUGUESE, PJL_PORTUGUESE, SETTING_PORTUGUESE},
{IDS_FINNISH, PJL_FINNISH, SETTING_FINNISH},
{IDS_SWEDISH, PJL_SWEDISH, SETTING_SWEDISH},
{IDS_TURKISH, PJL_TURKISH, SETTING_TURKISH},
{IDS_JAPANESE, PJL_JAPANESE, SETTING_JAPANESE},
{IDS_USE_DEFAULT, 0, SETTING_SUPPORTED}};
#ifdef WIN32
RECT r;
POINT pt1,
pt2;
GetWindowRect(GetDlgItem(hSetup, IDC_TIMEOUT), &r);
pt1.x = r.left;
pt1.y = r.top;
pt2.x = r.right;
pt2.y = r.bottom;
ScreenToClient(hSetup, &pt1);
ScreenToClient(hSetup, &pt2);
hTrackbarTimeout = CreateWindowEx(0, TRACKBAR_CLASS, TEXT(""),
WS_VISIBLE | WS_CHILD | WS_TABSTOP |
TBS_HORZ | TBS_AUTOTICKS | TBS_BOTTOM,
pt1.x, pt1.y,
pt2.x - pt1.x, pt2.y - pt1.y,
hSetup, (HMENU)IDC_TRACKBAR_TIMEOUT,
hInstance, NULL);
SendMessage(hTrackbarTimeout, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(15, 300));
SendMessage(hTrackbarTimeout, TBM_SETTICFREQ, (WPARAM)15, (LPARAM)15);
SendMessage(hTrackbarTimeout, TBM_SETPAGESIZE, (WPARAM)0, (LPARAM)15);
// If not supported or not writeable
if ( !( pjlFeatures.timeout & SETTING_SUPPORTED ) OR
!( pjlFeatures.timeout & SETTING_WRITEABLE ) )
{
EnableWindow(hTrackbarTimeout, FALSE);
ShowWindow(GetDlgItem(hSetup, IDC_TIMEOUT_TITLE), SW_HIDE);
EnableWindow(GetDlgItem(hSetup, IDC_TIMEOUT_LOW), FALSE);
EnableWindow(GetDlgItem(hSetup, IDC_TIMEOUT_HIGH), FALSE);
EnableWindow(GetDlgItem(hSetup, IDC_TIMEOUT_GROUP), FALSE);
}
#else
hTrackbarTimeout = GetDlgItem(hSetup, IDC_TIMEOUT);
SetScrollRange(hTrackbarTimeout, SB_CTL, 15, 300, TRUE);
#endif //win32
// Description
LoadString(hInstance, IDS_ADVANCED_DESC1, buffer, SIZEOF_IN_CHAR(buffer));
_tcscat(buffer, TEXT(" "));
LoadString(hInstance, IDS_ADVANCED_DESC2, &(buffer[_tcslen(buffer)]),
SIZEOF_IN_CHAR(buffer) - _tcslen(buffer));
SetDlgItemText(hSetup, IDC_TIP_TEXT, buffer);
// Timeout
if ( !newSettings.bTimeout )
{
newSettings.Timeout = 60;
oldSettings.Timeout = 60;
}
else
SetTextField(newSettings.Timeout);
#ifdef WIN32
SendMessage(hTrackbarTimeout, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)newSettings.Timeout);
#else
SetScrollPos(hTrackbarTimeout, SB_CTL, (int)newSettings.Timeout, TRUE);
#endif
bTimeoutChanged = FALSE;
newSettings.bTimeout = FALSE;
oldSettings.bTimeout = FALSE;
// Asset Number
dWord = sizeof(periphAcct);
dwResult = CALGetObject(hPeripheral, OT_PERIPHERAL_ACCT, 0, &periphAcct, &dWord);
if ( ( dwResult IS RC_SUCCESS ) AND ( periphAcct.flags & SET_ASSETNUM ) )
{
SetDlgItemText(hSetup, IDC_ASSET, periphAcct.assetNumber);
}
else
{
EnableWindow(GetDlgItem(hSetup, IDC_ASSET_LABEL), FALSE);
EnableWindow(GetDlgItem(hSetup, IDC_ASSET), FALSE);
}
// Personality
if ( pjlFeatures.personality & SETTING_SUPPORTED )
{
if ( newSettings.bPersonality )
range = NUM_PERSONALITY_RES - 1;
else
range = NUM_PERSONALITY_RES;
SendMessage(hPersonality, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
for ( i = 0; i < (DWORD)range; i++ )
{
if ( pjlFeatures.personality & personalityRes[i][2] )
{
LoadString(hInstance, (UINT)personalityRes[i][0], buffer, SIZEOF_IN_CHAR(buffer));
index = (int)SendMessage(hPersonality, CB_ADDSTRING, 0, (LPARAM)(LPSTR)buffer);
SendMessage(hPersonality, CB_SETITEMDATA, (WPARAM)index, (LPARAM)personalityRes[i][1]);
}
}
if ( newSettings.bPersonality )
{
dwItem = 0;
for ( index = 0; dwItem ISNT CB_ERR; index++ )
{
dwItem = (int)SendMessage(hPersonality, CB_GETITEMDATA, (WPARAM)index, 0L);
if ( dwItem IS (int)newSettings.Personality )
{
SendMessage(hPersonality, CB_SETCURSEL, (WPARAM)index, 0L);
if ( dwItem IS PJL_PCL )
SetNewIcon(hSetup, IDC_PERSONALITY_ICON, IDI_PERSONALITY_PCL);
else if ( dwItem IS PJL_POSTSCRIPT )
SetNewIcon(hSetup, IDC_PERSONALITY_ICON, IDI_PERSONALITY_PS);
else if ( dwItem IS PJL_AUTO )
SetNewIcon(hSetup, IDC_PERSONALITY_ICON, IDI_PERSONALITY);
else
SetNewIcon(hSetup, IDC_PERSONALITY_ICON, IDI_PERSONALITY_DEF);
dwItem = CB_ERR;
}
}
}
else
SendMessage(hPersonality, CB_SETCURSEL, (WPARAM)index, (LPARAM)0);
}
// If not supported or not writeable
if ( !( pjlFeatures.personality & SETTING_SUPPORTED ) OR
!( pjlFeatures.personality & SETTING_WRITEABLE ) )
{
EnableWindow(GetDlgItem(hSetup, IDC_PERSONALITY_LABEL), FALSE);
EnableWindow(GetDlgItem(hSetup, IDC_PERSONALITY), FALSE);
}
newSettings.bPersonality = FALSE;
oldSettings.bPersonality = FALSE;
// Language
if ( pjlFeatures.lang & SETTING_SUPPORTED )
{
if ( newSettings.bLang )
range = NUM_LANGUAGE_RES - 1;
else
range = NUM_LANGUAGE_RES;
SendMessage(hLanguage, CB_RESETCONTENT, 0, 0L);
for ( i = 0; i < (DWORD)range; i++ )
{
if ( pjlFeatures.lang & languageRes[i][2] )
{
LoadString(hInstance, (UINT)languageRes[i][0], buffer, SIZEOF_IN_CHAR(buffer));
index = (int)SendMessage(hLanguage, CB_ADDSTRING, 0, (LPARAM)(LPSTR)buffer);
SendMessage(hLanguage, CB_SETITEMDATA, (WPARAM)index, (LPARAM)languageRes[i][1]);
}
}
if ( newSettings.bLang )
{
dwItem = 0;
for ( index = 0; dwItem ISNT CB_ERR; index++ )
{
dwItem = (int)SendMessage(hLanguage, CB_GETITEMDATA, (WPARAM)index, 0L);
if ( dwItem IS (int)newSettings.Lang )
{
SendMessage(hLanguage, CB_SETCURSEL, (WPARAM)index, 0l);
if ( dwItem IS PJL_DANISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_DANISH);
else if ( dwItem IS PJL_DUTCH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_DUTCH);
else if ( dwItem IS PJL_ENGLISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_ENGLISH);
else if ( dwItem IS PJL_ENGLISH_UK )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_UK);
else if ( dwItem IS PJL_FINNISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_FINNISH);
else if ( dwItem IS PJL_FRENCH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_FRENCH);
else if ( dwItem IS PJL_CANADA )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_CANADA);
else if ( dwItem IS PJL_GERMAN )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_GERMAN);
else if ( dwItem IS PJL_ITALIAN )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_ITALIAN);
else if ( dwItem IS PJL_NORWEGIAN )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_NORWEGIAN);
else if ( dwItem IS PJL_POLISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_POLISH);
else if ( dwItem IS PJL_PORTUGUESE )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_PORTUGUESE);
else if ( dwItem IS PJL_SPANISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_SPANISH);
else if ( dwItem IS PJL_MEXICO )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_MEXICO);
else if ( dwItem IS PJL_SWEDISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_SWEDISH);
else if ( dwItem IS PJL_TURKISH )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_TURKISH);
else if ( dwItem IS PJL_JAPANESE )
SetNewIcon(hSetup, IDC_LANGUAGE_ICON, IDI_LANGUAGE_JAPAN);
dwItem = CB_ERR;
}
}
}
else
SendMessage(hLanguage, CB_SETCURSEL, (WPARAM)index, 0L);
}
// If not supported or not writeable
if ( !( pjlFeatures.lang & SETTING_SUPPORTED ) OR
!( pjlFeatures.lang & SETTING_WRITEABLE ) )
{
EnableWindow(GetDlgItem(hSetup, IDC_LANGUAGE_LABEL), FALSE);
EnableWindow(GetDlgItem(hSetup, IDC_LANGUAGE), FALSE);
}
newSettings.bLang = FALSE;
oldSettings.bLang = FALSE;
return(TRUE);
}
//.........................................................
void SaveAdvSetupValues(void)
{
int index;
DWORD dWord,
dwResult,
dwItem;
PeripheralAcct periphAcct;
// Timeout
if ( ( pjlFeatures.timeout & SETTING_SUPPORTED ) AND
( pjlFeatures.timeout & SETTING_WRITEABLE ) )
{
#ifdef WIN32
newSettings.Timeout = SendMessage(hTrackbarTimeout, TBM_GETPOS, (WPARAM)0, (LPARAM)0);
#else
newSettings.Timeout = GetScrollPos(hTrackbarTimeout, SB_CTL);
#endif
if ( bTimeoutChanged )
newSettings.bTimeout = TRUE;
}
else
newSettings.bTimeout = FALSE;
// Personality
if ( ( pjlFeatures.personality & SETTING_SUPPORTED ) AND
( pjlFeatures.personality & SETTING_WRITEABLE ) )
{
index = (int)SendMessage(hPersonality, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
if ( index ISNT LB_ERR )
{
dwItem = SendMessage(hPersonality, CB_GETITEMDATA, (WPARAM)index, (LPARAM)0);
if ( dwItem IS 0 )
newSettings.bPersonality = FALSE;
else if ( newSettings.Personality ISNT dwItem )
{
newSettings.bPersonality = TRUE;
newSettings.Personality = dwItem;
}
}
}
else
newSettings.bPersonality = FALSE;
// Language
if ( ( pjlFeatures.lang & SETTING_SUPPORTED ) AND
( pjlFeatures.lang & SETTING_WRITEABLE ) )
{
index = (int)SendMessage(hLanguage, CB_GETCURSEL, (WPARAM)0, 0L);
if (index ISNT LB_ERR)
{
dwItem = (int)SendMessage(hLanguage, CB_GETITEMDATA, (WPARAM)index, 0L);
if ( dwItem IS 0 )
newSettings.bLang = FALSE;
else if ( newSettings.Lang ISNT dwItem )
{
newSettings.bLang = TRUE;
newSettings.Lang = dwItem;
}
}
}
else
newSettings.bLang = FALSE;
// Asset Number
if ( IsWindowEnabled(GetDlgItem(hSetup, IDC_ASSET) ) )
{
GetDlgItemText(hSetup, IDC_ASSET, periphAcct.assetNumber, SIZEOF_IN_CHAR(periphAcct.assetNumber));
periphAcct.flags = SET_ASSETNUM;
dWord = sizeof(periphAcct);
dwResult = LALSetObject(hPeripheral, OT_PERIPHERAL_ACCT, 0, &periphAcct, &dWord);
DBSetAssetNum(hPeripheral,periphAcct.assetNumber);
}
}
//.........................................................
#ifdef WIN32
LRESULT OnContextHelpAdvSetup(WPARAM wParam, LPARAM lParam)
{
WinHelp((HWND)wParam, PRINTER_HELP_FILE, HELP_CONTEXTMENU,
(DWORD)(LPSTR)keywordIDListAdvSetup);
return(1);
}
#endif
//.........................................................
#ifdef WIN32
LRESULT OnF1HelpAdvSetup(WPARAM wParam, LPARAM lParam)
{
WinHelp((HWND)((LPHELPINFO)lParam)->hItemHandle, PRINTER_HELP_FILE, HELP_WM_HELP,
(DWORD)(LPSTR)keywordIDListAdvSetup);
return(1);
}
#endif
//.........................................................
void SetTextField(long pos)
{
TCHAR str[256],
buffer[256];
if ( pos < 60 )
{
LoadString(hInstance, IDS_SECONDS, str, SIZEOF_IN_CHAR(str));
wsprintf(buffer, str, pos);
}
else if ( pos IS 60 )
{
LoadString(hInstance, IDS_MINUTE, str, SIZEOF_IN_CHAR(str));
wsprintf(buffer, str, pos / 60);
}
else if ( pos % 60 IS 0 )
{
LoadString(hInstance, IDS_MINUTES, str, SIZEOF_IN_CHAR(str));
wsprintf(buffer, str, pos / 60);
}
else if ( pos / 60 IS 1 )
{
LoadString(hInstance, IDS_MINUTE_SECONDS, str, SIZEOF_IN_CHAR(str));
wsprintf(buffer, str, pos / 60, pos % 60);
}
else
{
LoadString(hInstance, IDS_MINUTES_SECONDS, str, SIZEOF_IN_CHAR(str));
wsprintf(buffer, str, pos / 60, pos % 60);
}
SetDlgItemText(hSetup, IDC_TIMEOUT_TITLE, buffer);
}