(****************************************************************************** * * 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.