fpc/packages/extra/palmunits/preferences.pp
2005-02-14 17:13:06 +00:00

392 lines
21 KiB
ObjectPascal

(******************************************************************************
*
* Copyright (c) 1995-2000 Palm, Inc. or its subsidiaries.
* All rights reserved.
*
* File: Preferences.h
*
* Release: Palm OS SDK 4.0 (63220)
*
* Description:
* Header for the system preferences
*
* History:
* 02/31/95 rsf Created by Roger Flores
* 06/26/99 kwk Added LanguageType.
* 06/30/99 CS Added MeasurementSystemType, then added it to both
* CountryPreferencesType and SystemPreferencesType,
* and bumped the version to 7.
* CS Added prefMeasurementSystem to select this
* preference.
* CS Added filler fields to CountryPreferencesType
* structure, since this guy gets saved as a
* resource.
* 09/20/99 gap added additional cXXXX country values.
* 09/20/99 gap cPRC -> cRepChina.
* 10/4/99 jmp Add support for auto-off duration times in seconds
* instead of minutes (the new seconds-based auto-off
* duration time is preferred; the minutes-based auto-ff
* duration times are maintained for compatibility).
* 10/5/99 jmp Make the seconds auto-off duration field a UInt16
* instead of a UInt8; also define constants for the
* "pegged" auto-off duration values (when the value
* is pegged, we no longer automatically shut off).
* 12/23/99 jmp Fix <> vs. "" problem.
* 04/30/00 CS Use LmCountryType instead of CountryType. Also removed
* deprecated countryNameLength, currencyNameLength, and
* currencySymbolLength, replacing usage with new
* kMaxCountryNameLen, kMaxCurrencyNameLen, and
* kMaxCurrencySymbolLen.
* 05/16/00 CS LmCountryType/LmLanguageType are now back to
* CountryType/LanguageType.
* 08/01/00 CS Added prefLanguage & prefLocale to selector set, and
* locale to SystemPreferencesType.
* 08/01/00 kwk Added timeZoneCountry to SystemPreferencesType, and
* prefTimeZoneCountry to SystemPreferencesChoice.
* 08/08/00 CS Moved obsolete CountryPreferencesType to RezConvert.cp,
* since that's the only code that still needs access to
* this private, obsolete resource.
* 08/08/00 peter Added attentionFlags to SystemPreferencesType, and
* prefAttentionFlags to SystemPreferencesChoice.
* 11/07/00 grant Added button default assignment resource type.
*
*****************************************************************************)
unit preferences;
interface
uses palmos, coretraps, datamgr, localemgr, datetime, localize, attentionmgr, systemmgr;
(***********************************************************************
* Constants
***********************************************************************)
const
noPreferenceFound = -1;
// Preference version constants
preferenceDataVer2 = 2; // Palm OS 2.0
preferenceDataVer3 = 3; // Palm OS 3.0
preferenceDataVer4 = 4; // Palm OS 3.1
preferenceDataVer5 = 5; // Palm OS 3.2a
preferenceDataVer6 = 6; // Palm OS 3.2b/3.3
preferenceDataVer8 = 8; // Palm OS 3.5
preferenceDataVer9 = 9; // Palm OS 4.0
// Be SURE to update "preferenceDataVerLatest" when adding a new prefs version...
preferenceDataVerLatest = preferenceDataVer9;
defaultAutoOffDuration = 2; // minutes
defaultAutoOffDurationSecs = 2 * minutesInSeconds; // seconds
peggedAutoOffDuration = $FF; // minutes (UInt8)
peggedAutoOffDurationSecs = $FFFF; // seconds (UInt16)
defaultAutoLockType = 0; //!!!never; // Never auto lock device
defaultAutoLockTime = 0;
defaultAutoLockTimeFlag = 0;
// Obsolete after V20
{!!!
defaultSysSoundLevel = slOn;
defaultGameSoundLevel = slOn;
defaultAlarmSoundLevel = slOn;
defaultSysSoundVolume = sndMaxAmp;
defaultGameSoundVolume = sndMaxAmp;
defaultAlarmSoundVolume = sndMaxAmp;
!!!}
type
MeasurementSystemType = Enum;
const
unitsEnglish = 0; // Feet, yards, miles, gallons, pounds, slugs, etc.
unitsMetric = Succ(unitsEnglish); // Meters, liters, grams, newtons, etc.
// These sound levels must corrospond to positions in the popup lists
// used by the preferences app. These are made obsolete after V20. The
// loudness of the sound is now represented as a number from 0 to sndMaxAmp.
type
SoundLevelTypeV20 = Enum;
const
slOn = 0;
slOff = 1;
// Device Automatic Locking options.
type
SecurityAutoLockType = Enum;
const
never = 0; // Auto-Lock disabled.
uponPowerOff = Succ(never); // Auto lock when the device powers off.
atPresetTime = Succ(uponPowerOff); // Auto lock at HH:MM every day.
afterPresetDelay = Succ(atPresetTime); // Auto lock after x minutes or hours.
// The number format (thousands separator and decimal point). This defines
// how numbers are formatted and not neccessarily currency numbers (i.e. Switzerland).
type
AnimationLevelType = Enum;
const
alOff = 0; // Never show an animation
alEventsOnly = Succ(alOff); // Show an animation for an event
alEventsAndRandom = Succ(alEventsOnly); // Also show random animation
alEventsAndMoreRandom = Succ(alEventsAndRandom); // Show random animations more frequently
type
SystemPreferencesChoice = Enum;
const
prefVersion = 0;
prefCountry = Succ(prefVersion);
prefDateFormat = Succ(prefCountry);
prefLongDateFormat = Succ(prefDateFormat);
prefWeekStartDay = Succ(prefLongDateFormat);
prefTimeFormat = Succ(prefWeekStartDay);
prefNumberFormat = Succ(prefTimeFormat);
prefAutoOffDuration = Succ(prefNumberFormat); // prefAutoOffDurationSecs is now preferred (prefAutoOffDuration is in minutes)
prefSysSoundLevelV20 = Succ(prefAutoOffDuration); // slOn or slOff - error beeps and other non-alarm/game sounds
prefGameSoundLevelV20 = Succ(prefSysSoundLevelV20); // slOn or slOff - game sound effects
prefAlarmSoundLevelV20 = Succ(prefGameSoundLevelV20); // slOn or slOff - alarm sound effects
prefHidePrivateRecordsV33 = Succ(prefAlarmSoundLevelV20);
prefDeviceLocked = Succ(prefHidePrivateRecordsV33);
prefLocalSyncRequiresPassword = Succ(prefDeviceLocked);
prefRemoteSyncRequiresPassword = Succ(prefLocalSyncRequiresPassword);
prefSysBatteryKind = Succ(prefRemoteSyncRequiresPassword);
prefAllowEasterEggs = Succ(prefSysBatteryKind);
prefMinutesWestOfGMT = Succ(prefAllowEasterEggs); // deprecated old unsigned minutes EAST of GMT
prefDaylightSavings = Succ(prefMinutesWestOfGMT); // deprecated old daylight saving time rule
prefRonamaticChar = Succ(prefDaylightSavings);
prefHard1CharAppCreator = Succ(prefRonamaticChar); // App creator for hard key #1
prefHard2CharAppCreator = Succ(prefHard1CharAppCreator); // App creator for hard key #2
prefHard3CharAppCreator = Succ(prefHard2CharAppCreator); // App creator for hard key #3
prefHard4CharAppCreator = Succ(prefHard3CharAppCreator); // App creator for hard key #4
prefCalcCharAppCreator = Succ(prefHard4CharAppCreator); // App creator for calculator soft key
prefHardCradleCharAppCreator = Succ(prefCalcCharAppCreator); // App creator for hard cradle key
prefLauncherAppCreator = Succ(prefHardCradleCharAppCreator); // App creator for launcher soft key
prefSysPrefFlags = Succ(prefLauncherAppCreator);
prefHardCradle2CharAppCreator = Succ(prefSysPrefFlags); // App creator for 2nd hard cradle key
prefAnimationLevel = Succ(prefHardCradle2CharAppCreator);
// Additions for PalmOS 3.0:
prefSysSoundVolume = Succ(prefAnimationLevel); // actual amplitude - error beeps and other non-alarm/game sounds
prefGameSoundVolume = Succ(prefSysSoundVolume); // actual amplitude - game sound effects
prefAlarmSoundVolume = Succ(prefGameSoundVolume); // actual amplitude - alarm sound effects
prefBeamReceive = Succ(prefAlarmSoundVolume); // not used - use ExgLibControl with ir(Get/Set)ScanningMode instead
prefCalibrateDigitizerAtReset = Succ(prefBeamReceive); // True makes the user calibrate at soft reset time
prefSystemKeyboardID = Succ(prefCalibrateDigitizerAtReset); // ID of the preferred keyboard resource
prefDefSerialPlugIn = Succ(prefSystemKeyboardID); // creator ID of the default serial plug-in
// Additions for PalmOS 3.1:
prefStayOnWhenPluggedIn = Succ(prefDefSerialPlugIn); // don't sleep after timeout when using line current
prefStayLitWhenPluggedIn = Succ(prefStayOnWhenPluggedIn); // keep backlight on when not sleeping on line current
// Additions for PalmOS 3.2:
prefAntennaCharAppCreator = Succ(prefStayLitWhenPluggedIn); // App creator for antenna key
// Additions for PalmOS 3.3:
prefMeasurementSystem = Succ(prefAntennaCharAppCreator); // English, Metric, etc.
// Additions for PalmOS 3.5:
prefShowPrivateRecords = Succ(prefMeasurementSystem); // returns privateRecordViewEnum
prefAutoOffDurationSecs = Succ(prefShowPrivateRecords); // auto-off duration in seconds
// Additions for PalmOS 4.0:
prefTimeZone = Succ(prefAutoOffDurationSecs); // GMT offset in minutes = Succ(); + for east of GMT = Succ(); - for west
prefDaylightSavingAdjustment = Succ(prefTimeZone); // current DST adjustment in minutes (typically 0 or 60)
prefAutoLockType = Succ(prefDaylightSavingAdjustment); // Never = Succ(); on poweroff = Succ(); after preset delay or at preset time.
prefAutoLockTime = Succ(prefAutoLockType); // Auto lock preset time or delay.
prefAutoLockTimeFlag = Succ(prefAutoLockTime); // For Minutes or Hours.
prefLanguage = Succ(prefAutoLockTimeFlag); // Language spoken in country selected via Setup app/Formats panel
prefLocale = Succ(prefLanguage); // Locale for country selected via Setup app/Formats panel
prefTimeZoneCountry = Succ(prefLocale); // Country used to specify time zone.
prefAttentionFlags = Succ(prefTimeZoneCountry); // User prefs for getting user's attention
prefDefaultAppCreator = Succ(prefAttentionFlags); // Default application launched on reset.
type
SystemPreferencesTypeV10 = record
version: UInt16; // Version of preference info
// International preferences
country: CountryType; // Country the device is in
dateFormat: DateFormatType; // Format to display date in
longDateFormat: DateFormatType; // Format to display date in
weekStartDay: UInt8; // Sunday or Monday
timeFormat: TimeFormatType; // Format to display time in
numberFormat: NumberFormatType; // Format to display numbers in
// system preferences
autoOffDuration: UInt8; // Time period before shutting off (in minutes)
sysSoundLevel: SoundLevelTypeV20; // slOn or slOff - error beeps and other non-alarm sounds
alarmSoundLevel: SoundLevelTypeV20; // slOn or slOff - alarm only
hideSecretRecords: Boolean; // True to not display records with
// their secret bit attribute set
deviceLocked: Boolean; // Device locked until the system
// password is entered
reserved1: UInt8;
sysPrefFlags: UInt16; // Miscellaneous system pref flags
// copied into the global GSysPrefFlags
// at boot time.
sysBatteryKind: SysBatteryKind; // The type of batteries installed. This
// is copied into the globals GSysbatteryKind
// at boot time.
reserved2: UInt8;
end;
// Any entries added to this structure must be initialized in
// Prefereces.c:GetPreferenceResource
// DOLATER CS - We should move SystemPreferencesType, SystemPreferencesTypeV10,
// PrefGetPreferences, and PrefSetPreferences to a private header
// file, since any code compiled against an old version of this
// struct will trash memory when run on a version of the Palm OS
// that makes the struct longer.
SystemPreferencesType = record
version: UInt16; // Version of preference info
// International preferences
country: CountryType; // Country the device is in (see PalmLocale.pas)
dateFormat: DateFormatType; // Format to display date in
longDateFormat: DateFormatType; // Format to display date in
weekStartDay: Int8; // Sunday or Monday
timeFormat: TimeFormatType; // Format to display time in
numberFormat: NumberFormatType; // Format to display numbers in
// system preferences
autoOffDuration: UInt8; // Time period in minutes before shutting off (use autoOffDurationSecs instead).
sysSoundLevelV20: SoundLevelTypeV20; // slOn or slOff - error beeps and other non-alarm/game sounds
gameSoundLevelV20: SoundLevelTypeV20; // slOn or slOff - game sound effects
alarmSoundLevelV20: SoundLevelTypeV20; // slOn or slOff - alarm sound effects
hideSecretRecords: Boolean; // True to not display records with
// their secret bit attribute set
deviceLocked: Boolean; // Device locked until the system
// password is entered
localSyncRequiresPassword: Boolean; // User must enter password on Pilot
remoteSyncRequiresPassword: Boolean; // User must enter password on Pilot
sysPrefFlags: UInt16; // Miscellaneous system pref flags
// copied into the global GSysPrefFlags
// at boot time. Constants are
// sysPrefFlagXXX defined in SystemPrv.h
sysBatteryKind: SysBatteryKind; // The type of batteries installed. This
// is copied into the globals GSysbatteryKind
// at boot time.
reserved1: UInt8;
minutesWestOfGMT: UInt32; // minutes west of Greenwich
daylightSavings: DaylightSavingsTypes; // Type of daylight savings correction
reserved2: UInt8;
ronamaticChar: UInt16; // character to generate from ronamatic stroke.
// Typically it popups the onscreen keyboard.
hard1CharAppCreator: UInt32; // creator of application to launch in response
// to the hard button #1. Used by SysHandleEvent.
hard2CharAppCreator: UInt32; // creator of application to launch in response
// to the hard button #2. Used by SysHandleEvent.
hard3CharAppCreator: UInt32; // creator of application to launch in response
// to the hard button #3. Used by SysHandleEvent.
hard4CharAppCreator: UInt32; // creator of application to launch in response
// to the hard button #4. Used by SysHandleEvent.
calcCharAppCreator: UInt32; // creator of application to launch in response
// to the Calculator icon. Used by SysHandleEvent.
hardCradleCharAppCreator: UInt32; // creator of application to launch in response
// to the Cradle button. Used by SysHandleEvent.
launcherCharAppCreator: UInt32; // creator of application to launch in response
// to the launcher button. Used by SysHandleEvent.
hardCradle2CharAppCreator: UInt32; // creator of application to launch in response
// to the 2nd Cradle button. Used by SysHandleEvent.
animationLevel: AnimationLevelType; // amount of animation to display
maskPrivateRecords: Boolean; // Only meaningful if hideSecretRecords is true.
//true to show a grey placeholder box for secret records.
//was reserved3 - added for 3.5
// Additions for PalmOS 3.0:
sysSoundVolume: UInt16; // system amplitude (0 - sndMaxAmp) - taps, beeps
gameSoundVolume: UInt16; // game amplitude (0 - sndMaxAmp) - explosions
alarmSoundVolume: UInt16; // alarm amplitude (0 - sndMaxAmp)
beamReceive: Boolean; // False turns off IR sniffing, sends still work.
calibrateDigitizerAtReset: Boolean; // True makes the user calibrate at soft reset time
systemKeyboardID: UInt16; // ID of the preferred keyboard resource
defSerialPlugIn: UInt32; // creator ID of the default serial plug-in
// Additions for PalmOS 3.1:
stayOnWhenPluggedIn: Boolean; // don't sleep after timeout when using line current
stayLitWhenPluggedIn: Boolean; // keep backlight on when not sleeping on line current
// Additions for PalmOS 3.2:
antennaCharAppCreator: UInt32; // creator of application to launch in response
// to the antenna key. Used by SysHandleEvent.
// Additions for PalmOS 3.5:
measurementSystem: MeasurementSystemType; // metric, english, etc.
reserved3: UInt8;
autoOffDurationSecs: UInt16; // Time period in seconds before shutting off.
// Additions for PalmOS 4.0:
timeZone: Int16; // minutes east of Greenwich
daylightSavingAdjustment: Int16; // current daylight saving correction in minutes
timeZoneCountry: CountryType; // country used to specify time zone.
autoLockType: SecurityAutoLockType; // Never, on power off, after preset delay or at preset time
autoLockTime: UInt32; // Auto lock preset time or delay.
autoLockTimeFlag: Boolean; // For Minutes or Hours.
language: LanguageType; // Language spoken in country selected via Setup app/Formats panel
attentionFlags: AttnFlagsType; // User prefs for getting user's attention
defaultAppCreator: UInt32; // Creator of the default "safe" app that is launched
// on a reset.
end;
SystemPreferencesPtr = ^SystemPreferencesType;
// structure of the resource that holds hard/soft button defaults
type
ButtonDefaultAppType = record
keyCode: UInt16; // virtual key code of the hard/soft button
creator: UInt32; // app creator code
end;
type
ButtonDefaultListType = record
numButtons: UInt16; // number of default button assignments
button: array [0..0] of ButtonDefaultAppType; // array of button assignments
end;
//-------------------------------------------------------------------
// Preferences routines
//-------------------------------------------------------------------
function PrefOpenPreferenceDBV10: DmOpenRef; syscall sysTrapPrefOpenPreferenceDBV10;
function PrefOpenPreferenceDB(saved: Boolean): DmOpenRef; syscall sysTrapPrefOpenPreferenceDB;
procedure PrefGetPreferences(p: SystemPreferencesPtr); syscall sysTrapPrefGetPreferences;
procedure PrefSetPreferences(p: SystemPreferencesPtr); syscall sysTrapPrefSetPreferences;
function PrefGetPreference(choice: SystemPreferencesChoice): UInt32; syscall sysTrapPrefGetPreference;
procedure PrefSetPreference(choice: SystemPreferencesChoice; value: UInt32); syscall sysTrapPrefSetPreference;
function PrefGetAppPreferences(creator: UInt32; id: UInt16; prefs: Pointer;
var prefsSize: UInt16; saved: Boolean): Int16; syscall sysTrapPrefGetAppPreferences;
function PrefGetAppPreferencesV10(type_: UInt32; version: Int16; prefs: Pointer; prefsSize: UInt16): Boolean; syscall sysTrapPrefGetAppPreferencesV10;
procedure PrefSetAppPreferences(creator: UInt32; id: UInt16; version: Int16;
const prefs: Pointer; prefsSize: UInt16; saved: Boolean); syscall sysTrapPrefSetAppPreferences;
procedure PrefSetAppPreferencesV10(creator: UInt32; version: Int16; prefs: Pointer; prefsSize: UInt16); syscall sysTrapPrefSetAppPreferencesV10;
implementation
end.