API Guide Home
(Online version only)

HsNavCommon.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002  * Copyright (c) 2004-2005 palmOne, Inc. or its subsidiaries.
00003  * All rights reserved.
00004  ******************************************************************************/
00005 /**
00006  * @defgroup    HsNav 5-Way Navigation Library
00007  * @brief       This library provides 5-way navigation support for applications
00008  *              on the Treo 600 devices.
00009  *
00010  * The 5-way navigation features and APIs described here have already existed
00011  * in Palm OS SDK for Palm OS ver. 5.4.1 and above, and applications that are
00012  * developed for newer devices should be using PalmSource's Palm OS definitions
00013  * of these features and APIs. Developers can use palmOne defined features to extend
00014  * support back to Treo 600 devices.
00015  *
00016  * For more information on 5-way navigation support, please refer to palmOne
00017  * Developer Guide and also the Palm OS Documentation.
00018  *
00019  * @{
00020  * @}
00021  */
00022 /**
00023  * @ingroup HsNav
00024  */
00025 
00026 /**
00027  * @file    HsNavCommon.h
00028  * @brief   Public common header file for 5-way navigation support on Treo 600.
00029  *
00030  * This file contains the common constant and structures used to support 5-way navigation
00031  * in an application.
00032  *
00033  */
00034 
00035 #ifndef   __HS_NAV_COMMON_H__
00036 #define   __HS_NAV_COMMON_H__
00037 
00038 
00039 #include <Bitmap.h> // for RGBColorType
00040 
00041 #if 0
00042 #pragma mark -------- HS-Specific -------------
00043 #endif
00044 
00045 //*********************************************************
00046 // The current version of the navigation API (this is the
00047 //  value set for hsFtrIDNavigationSupported feature)
00048 //*********************************************************
00049 #define hsNavAPIVersion     2
00050 
00051 
00052 //*********************************************************
00053 // Focus treatment definitions
00054 //*********************************************************
00055 #define hsNavFocusRingWidth           6       // Width in double-density coordinates
00056 #define hsNavFocusRingWidthSingleDensity    3   // Width in single-density coordinates
00057 #define hsNavFocusRingNoExtraInfo     ((Int16)0xFFFF)
00058 
00059 
00060 enum HsNavFocusColorEnumTag
00061 {
00062   hsNavFocusColorInsideBottomRightRing  = 0,  // Deprecated (HsNav version 1 focus treatment)
00063   hsNavFocusColorInsideTopLeftRing = 1,       // Deprecated (HsNav version 1 focus treatment)
00064   hsNavFocusColorMiddleRing = 2,              // Deprecated (HsNav version 1 focus treatment)
00065   hsNavFocusColorOutsideRing = 3,             // Deprecated (HsNav version 1 focus treatment)
00066   hsNavFocusColorSecondaryHighlight = 4,
00067   hsNavFocusColorRing1 = 5,                   // HsNav version 2 focus treatment.  Innermost ring.
00068   hsNavFocusColorRing2 = 6,                   // HsNav version 2 focus treatment.
00069   hsNavFocusColorRing3 = 7,                   // HsNav version 2 focus treatment.
00070   hsNavFocusColorRing4 = 8,                   // HsNav version 2 focus treatment.
00071   hsNavFocusColorRing5 = 9,                   // HsNav version 2 focus treatment.
00072   hsNavFocusColorRing6 = 10                   // HsNav version 2 focus treatment.  Outermost ring.
00073 };
00074 typedef UInt16 HsNavFocusColorEnum;
00075 
00076 
00077 enum HsNavFocusRingStyleEnumTag
00078 {
00079   hsNavFocusRingStyleObjectTypeDefault = 0,
00080   hsNavFocusRingStyleSquare = 1,
00081   hsNavFocusRingStyleRound = 2,
00082   hsNavFocusRingStyleHorizontalBars = 3,
00083   hsNavFocusRingStyleInvalid = 0xFFFF
00084 };
00085 typedef UInt16 HsNavFocusRingStyleEnum;
00086 
00087 #if PALMOS_SDK_VERSION < 0x0541
00088 
00089 // FrmNavFocusRingStyleEnum's definition should always be exactly the same as
00090 //  HsNavFocusRingStyleEnum's definition since we want their use to be
00091 //  completely interchangeable.  HsNavFocusRingStyleEnum is what the Treo600
00092 //  SDK used and FrmNavFocusRingStyleEnum is what PSI (and Treo650) will use in
00093 //  their SDK.  PSI originally was not going to take focus ring related API
00094 //  but this changed after Treo600 shipped.
00095 enum FrmNavFocusRingStyleEnumTag
00096 {
00097   frmNavFocusRingStyleObjectTypeDefault = 0,
00098   frmNavFocusRingStyleSquare = 1,
00099   frmNavFocusRingStyleRound = 2,
00100   frmNavFocusRingStyleHorizontalBars = 3,
00101   frmNavFocusRingStyleInvalid = 0xFFFF
00102 };
00103 typedef UInt16 FrmNavFocusRingStyleEnum;
00104 #define frmNavFocusRingNoExtraInfo    ((Int16)0xFFFF)
00105 
00106 #endif // PALMOS_SDK_VERSION < 0x0541
00107 
00108 #if 0
00109 #pragma mark -------- Incs:Core:UI:UIResources.h -------------
00110 #endif
00111 
00112 #define formNavRscType                      'fnav'
00113 
00114 
00115 #if 0
00116 #pragma mark -------- Incs:Core:System:TextMgr.h ---------------
00117 #endif
00118 
00119 //*********************************************************
00120 // Macro for detecting if character is a rocker character
00121 //*********************************************************
00122 
00123 // <c> is a rocker key if the event modifier <m> has the command bit set
00124 // and <c> is in the proper range
00125 #define TxtCharIsRockerKey(m, c)    ((((m) & commandKeyMask) != 0) && \
00126                                     ((((c) >= vchrRockerUp) && ((c) <= vchrRockerCenter))))
00127 
00128 
00129 #if 0
00130 #pragma mark -------- Incs:Core:CoreTraps.h ----------------
00131 #endif
00132 
00133 //*********************************************************
00134 // Selector definitions for Navigation API functions
00135 //*********************************************************
00136 #if PALMOS_SDK_VERSION < 0x0541
00137 
00138 #define sysTrapNavSelector                      0xA46F
00139 
00140 #define NavSelectorFrmCountObjectsInNavOrder    0x0
00141 #define NavSelectorFrmGetNavOrder               0x1
00142 #define NavSelectorFrmSetNavOrder               0x2
00143 #define NavSelectorFrmGetNavEntry               0x3
00144 #define NavSelectorFrmSetNavEntry               0x4
00145 #define NavSelectorFrmGetNavState               0x5
00146 #define NavSelectorFrmSetNavState               0x6
00147 #define NavSelectorFrmNavDrawFocusRing          0x7
00148 #define NavSelectorFrmNavRemoveFocusRing        0x8
00149 #define NavSelectorFrmNavGetFocusRingInfo       0x9
00150 
00151 #endif // PALMOS_SDK_VERSION < 0x0541
00152 
00153 #define NavSelectorFrmNavObjectTakeFocus        0xA
00154 
00155 
00156 #if 0
00157 #pragma mark ------- Incs:Core:System:ErrorBase.h --------
00158 #endif
00159 
00160 //*********************************************************
00161 // Error class and codes for UI Library
00162 //*********************************************************
00163 #if PALMOS_SDK_VERSION < 0x0541
00164 
00165 #define uilibErrorClass             0x3A00  // UI Library (Forms, Controls, etc)
00166 
00167 #define uilibErrInvalidParam          (uilibErrorClass | 1)
00168 #define uilibErrCurrentFocusInvalid   (uilibErrorClass | 2)
00169 #define uilibErrObjectFocusModeOff    (uilibErrorClass | 3)
00170 #define uilibErrObjectNotFound        (uilibErrorClass | 4)
00171 #define uilibErrNoNavInfoForForm      (uilibErrorClass | 5)
00172 #define uilibErrInvalidFocusObject    (uilibErrorClass | 6)
00173 #define uilibErrFormDoesNotHaveFocus  (uilibErrorClass | 7)
00174 
00175 #endif // PALMOS_SDK_VERSION < 0x0541
00176 
00177 
00178 #if 0
00179 #pragma mark -------- Incs:Core:UI:Form.h -----------
00180 #endif
00181 
00182 //*********************************************************
00183 // Nav Flags (used with navFlags field of FrmNavHeaderType)
00184 //*********************************************************
00185 #if PALMOS_SDK_VERSION < 0x0541
00186 
00187 typedef UInt32  FrmNavHeaderFlagsType;
00188 
00189 #define kFrmNavHeaderFlagsObjectFocusStartState       0x00000001
00190 #define kFrmNavHeaderFlagsAppFocusStartState          0x00000002
00191 #define kFrmNavHeaderFlagsAutoGenerated               0x80000000
00192 
00193 #define kFrmNavHeaderFlagsStartStateMask              0x00000003
00194 #define kFrmNavHeaderFlagsDefaultStartStateValue      0x00000000
00195 #define kFrmNavHeaderFlagsObjectFocusStartStateValue  0x00000001
00196 #define kFrmNavHeaderFlagsAppFocusStartStateValue     0x00000002
00197 #define kFrmNavHeaderFlagsInvalidStartStateValue      0x00000003
00198 
00199 
00200 //*********************************************************
00201 // Object Flags (used with objectFlags field of
00202 //  FrmNavOrderEntryType)
00203 //*********************************************************
00204 typedef UInt16  FrmNavObjectFlagsType;
00205 
00206 #define kFrmNavObjectFlagsSkip                  0x0001
00207 #define kFrmNavObjectFlagsForceInteractionMode  0x0002
00208 #define kFrmNavObjectFlagsIsBigButton           0x8000
00209 
00210 
00211 //*********************************************************
00212 // Nav State Flags (used with stateFlags parameter of
00213 //  FrmGetNavState and FrmSetNavState API functions)
00214 //*********************************************************
00215 typedef UInt32  FrmNavStateFlagsType;
00216 
00217 #define kFrmNavStateFlagsInteractionMode        0x00000001
00218 #define kFrmNavStateFlagsObjectFocusMode        0x00000002
00219 
00220 
00221 //*********************************************************
00222 // The current version of the navigation structures
00223 //  (FrmNavOrderEntryType and FrmNavHeaderType)
00224 //*********************************************************
00225 #define kFrmNavInfoVersion                      1
00226 
00227 #endif // PALMOS_SDK_VERSION < 0x0541
00228 
00229 
00230 #if 0
00231 #pragma mark -------- Incs:Core:System:SystemMgr.h -----------
00232 #endif
00233 
00234 #if PALMOS_SDK_VERSION < 0x0541
00235 
00236 #define sysFtrNumFiveWayNavVersion      32          // version of the 5-way nav if any
00237 
00238 #endif // PALMOS_SDK_VERSION < 0x0541
00239 
00240 
00241 #if 0
00242 #pragma mark --------  Public Structures   ----------------
00243 #endif
00244 
00245 #if PALMOS_SDK_VERSION < 0x0541
00246 
00247 //*********************************************************
00248 // Structures used with Navigation API functions
00249 //*********************************************************
00250 
00251 typedef struct FrmNavOrderEntryTag
00252 {
00253     UInt16                objectID;
00254     FrmNavObjectFlagsType objectFlags;
00255     UInt16                aboveObjectID;
00256     UInt16                belowObjectID;
00257 } FrmNavOrderEntryType;
00258 
00259 
00260 typedef struct FrmNavHeaderTag
00261 {
00262     UInt16                version;                // This is version 1
00263     UInt16                numberOfObjects;
00264     UInt16                headerSizeInBytes;      // 20 for the version 1 structure
00265     UInt16                listElementSizeInBytes; // 8 for the version 1 structure
00266     FrmNavHeaderFlagsType navFlags;
00267     UInt16                initialObjectIDHint;
00268     UInt16                jumpToObjectIDHint;
00269     UInt16                bottomLeftObjectIDHint;
00270     UInt16                padding1;
00271 } FrmNavHeaderType;
00272 
00273 #endif // PALMOS_SDK_VERSION < 0x0541
00274 
00275 #endif    // __HS_NAV_COMMON_H__
00276 
00277 

Top Palm Developer Network
© 2004-2008, Palm, Inc. All rights reserved.
Generated on Fri Jun 13 10:06:53 2008 for Palm API Guide