Skip to content

Commit

Permalink
Add navigable content use case to replace settings use case
Browse files Browse the repository at this point in the history
  • Loading branch information
nroggeman-ledger committed Oct 1, 2024
1 parent cb5cfae commit 3d7a7da
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 100 deletions.
4 changes: 2 additions & 2 deletions lib_nbgl/doc/nbgl_use_case.dox
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ A few APIs are available to draw typical Use-Cases, such as:

Some APIs have also been kept for backward compatibility, and for some rare cases:

- for Settings:
- @ref nbgl_useCaseSettings() to draw a level of settings pages
- for generic navigable content:
- @ref nbgl_useCaseNavigableContent() to draw a level of generic content navigable pages
- for most used reviews:
- @ref nbgl_useCaseReviewStart() to draw the cover page of a review (initial page, without data)
- @ref nbgl_useCaseStaticReview() to draw the data pages of a regular review, when all info are available from the beginning (all pages but the cover one)
Expand Down
119 changes: 64 additions & 55 deletions lib_nbgl/include/nbgl_use_case.h
Original file line number Diff line number Diff line change
Expand Up @@ -365,61 +365,70 @@ uint8_t nbgl_useCaseGetNbChoicesInPage(uint8_t nbChoice
uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t *tagValueList);

// use case drawing
void nbgl_useCaseHome(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback);
void nbgl_useCaseHomeExt(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
const char *actionButtonText,
nbgl_callback_t actionCallback,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback);
void nbgl_useCaseSettings(const char *settingsTitle,
uint8_t initPage,
uint8_t nbPages,
bool touchableTitle,
nbgl_callback_t quitCallback,
nbgl_navCallback_t navCallback,
nbgl_layoutTouchCallback_t controlsCallback);
void nbgl_useCaseGenericSettings(const char *appName,
uint8_t initPage,
const nbgl_genericContents_t *settingContents,
const nbgl_contentInfoList_t *infosList,
nbgl_callback_t quitCallback);
void nbgl_useCaseConfirm(const char *message,
const char *subMessage,
const char *confirmText,
const char *rejectText,
nbgl_callback_t callback);
void nbgl_useCaseReviewStart(const nbgl_icon_details_t *icon,
const char *reviewTitle,
const char *reviewSubTitle,
const char *rejectText,
nbgl_callback_t continueCallback,
nbgl_callback_t rejectCallback);
void nbgl_useCaseRegularReview(uint8_t initPage,
uint8_t nbPages,
const char *rejectText,
nbgl_layoutTouchCallback_t buttonCallback,
nbgl_navCallback_t navCallback,
nbgl_choiceCallback_t choiceCallback);
void nbgl_useCaseStaticReview(const nbgl_contentTagValueList_t *tagValueList,
const nbgl_pageInfoLongPress_t *infoLongPress,
const char *rejectText,
nbgl_choiceCallback_t callback);
void nbgl_useCaseStaticReviewLight(const nbgl_contentTagValueList_t *tagValueList,
const nbgl_pageInfoLongPress_t *infoLongPress,
const char *rejectText,
nbgl_choiceCallback_t callback);
void nbgl_useCaseAddressConfirmation(const char *address, nbgl_choiceCallback_t callback);
void nbgl_useCaseAddressConfirmationExt(const char *address,
nbgl_choiceCallback_t callback,
const nbgl_contentTagValueList_t *tagValueList);
DEPRECATED void nbgl_useCaseHome(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback);
DEPRECATED void nbgl_useCaseHomeExt(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
const char *actionButtonText,
nbgl_callback_t actionCallback,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback);
void nbgl_useCaseNavigableContent(const char *title,
uint8_t initPage,
uint8_t nbPages,
nbgl_callback_t quitCallback,
nbgl_navCallback_t navCallback,
nbgl_layoutTouchCallback_t controlsCallback);
DEPRECATED void nbgl_useCaseSettings(const char *settingsTitle,
uint8_t initPage,
uint8_t nbPages,
bool touchableTitle,
nbgl_callback_t quitCallback,
nbgl_navCallback_t navCallback,
nbgl_layoutTouchCallback_t controlsCallback);
void nbgl_useCaseGenericSettings(const char *appName,
uint8_t initPage,
const nbgl_genericContents_t *settingContents,
const nbgl_contentInfoList_t *infosList,
nbgl_callback_t quitCallback);
void nbgl_useCaseConfirm(const char *message,
const char *subMessage,
const char *confirmText,
const char *rejectText,
nbgl_callback_t callback);
void nbgl_useCaseReviewStart(const nbgl_icon_details_t *icon,
const char *reviewTitle,
const char *reviewSubTitle,
const char *rejectText,
nbgl_callback_t continueCallback,
nbgl_callback_t rejectCallback);
void nbgl_useCaseRegularReview(uint8_t initPage,
uint8_t nbPages,
const char *rejectText,
nbgl_layoutTouchCallback_t buttonCallback,
nbgl_navCallback_t navCallback,
nbgl_choiceCallback_t choiceCallback);
void nbgl_useCaseStaticReview(const nbgl_contentTagValueList_t *tagValueList,
const nbgl_pageInfoLongPress_t *infoLongPress,
const char *rejectText,
nbgl_choiceCallback_t callback);
void nbgl_useCaseStaticReviewLight(const nbgl_contentTagValueList_t *tagValueList,
const nbgl_pageInfoLongPress_t *infoLongPress,
const char *rejectText,
nbgl_choiceCallback_t callback);

DEPRECATED void nbgl_useCaseAddressConfirmationExt(const char *address,
nbgl_choiceCallback_t callback,
const nbgl_contentTagValueList_t *tagValueList);
#define nbgl_useCaseAddressConfirmation(__address, __callback) \
nbgl_useCaseAddressConfirmationExt(__address, __callback, NULL)

#ifdef NBGL_KEYPAD
void nbgl_useCaseKeypadDigits(const char *title,
uint8_t minDigits,
Expand Down
92 changes: 49 additions & 43 deletions lib_nbgl/src/nbgl_use_case.c
Original file line number Diff line number Diff line change
Expand Up @@ -2330,29 +2330,30 @@ uint8_t nbgl_useCaseGetNbPagesForTagValueList(const nbgl_contentTagValueList_t *
* @deprecated
* See #nbgl_useCaseHomeAndSettings
*/
DEPRECATED void nbgl_useCaseHome(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback)
{
nbgl_useCaseHomeExt(
appName, appIcon, tagline, withSettings, NULL, NULL, topRightCallback, quitCallback);
void nbgl_useCaseHome(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback)
{
nbgl_homeAction_t homeAction = {0};
useCaseHomeExt(
appName, appIcon, tagline, withSettings, &homeAction, topRightCallback, quitCallback);
}

/**
* @deprecated
* See #nbgl_useCaseHomeAndSettings
*/
DEPRECATED void nbgl_useCaseHomeExt(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
const char *actionButtonText,
nbgl_callback_t actionCallback,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback)
void nbgl_useCaseHomeExt(const char *appName,
const nbgl_icon_details_t *appIcon,
const char *tagline,
bool withSettings,
const char *actionButtonText,
nbgl_callback_t actionCallback,
nbgl_callback_t topRightCallback,
nbgl_callback_t quitCallback)
{
nbgl_homeAction_t homeAction = {.callback = actionCallback,
.icon = NULL,
Expand All @@ -2364,28 +2365,25 @@ DEPRECATED void nbgl_useCaseHomeExt(const char *appName,
}

/**
* @brief Draws the settings pages of an app with as many pages as given
* For each page, the given navCallback will be called to get the content. Only 'type' and
* union has to be set in this content
* @brief Initiates the drawing a set of pages of generic content, with a touchable header (usually
* to go back or to an upper level) For each page (including the first one), the given 'navCallback'
* will be called to get the content. Only 'type' and union has to be set in this content.
*
* @param title string to set in touchable title
* @param title string to set in touchable title (header)
* @param initPage page on which to start [0->(nbPages-1)]
* @param nbPages number of pages
* @param touchable unused, it is always on
* @param quitCallback callback called when quit button (or title) is pressed
* @param quitCallback callback called title is pressed
* @param navCallback callback called when navigation arrows are pressed
* @param controlsCallback callback called when any controls in the settings (radios, switches) is
* called (the tokens must be >= @ref FIRST_USER_TOKEN)
*/
void nbgl_useCaseSettings(const char *title,
uint8_t initPage,
uint8_t nbPages,
bool touchable,
nbgl_callback_t quitCallback,
nbgl_navCallback_t navCallback,
nbgl_layoutTouchCallback_t controlsCallback)
void nbgl_useCaseNavigableContent(const char *title,
uint8_t initPage,
uint8_t nbPages,
nbgl_callback_t quitCallback,
nbgl_navCallback_t navCallback,
nbgl_layoutTouchCallback_t controlsCallback)
{
UNUSED(touchable);
reset_callbacks();

// memorize context
Expand All @@ -2401,6 +2399,23 @@ void nbgl_useCaseSettings(const char *title,
displaySettingsPage(initPage, true);
}

/**
* @deprecated
* See #nbgl_useCaseNavigableContent
*/
void nbgl_useCaseSettings(const char *title,
uint8_t initPage,
uint8_t nbPages,
bool touchable,
nbgl_callback_t quitCallback,
nbgl_navCallback_t navCallback,
nbgl_layoutTouchCallback_t controlsCallback)
{
UNUSED(touchable);
nbgl_useCaseNavigableContent(
title, initPage, nbPages, quitCallback, navCallback, controlsCallback);
}

/**
* @brief Draws the settings pages of an app with automatic pagination depending on content
* to be displayed that is passed through settingContents and infosList
Expand Down Expand Up @@ -3245,18 +3260,9 @@ void nbgl_useCaseReviewStreamingFinish(const char *finishTitle,
* @deprecated
* See #nbgl_useCaseAddressReview
*/
DEPRECATED void nbgl_useCaseAddressConfirmation(const char *address, nbgl_choiceCallback_t callback)
{
nbgl_useCaseAddressConfirmationExt(address, callback, NULL);
}

/**
* @deprecated
* See #nbgl_useCaseAddressReview
*/
DEPRECATED void nbgl_useCaseAddressConfirmationExt(const char *address,
nbgl_choiceCallback_t callback,
const nbgl_contentTagValueList_t *tagValueList)
void nbgl_useCaseAddressConfirmationExt(const char *address,
nbgl_choiceCallback_t callback,
const nbgl_contentTagValueList_t *tagValueList)
{
reset_callbacks();
memset(&genericContext, 0, sizeof(genericContext));
Expand Down

0 comments on commit 3d7a7da

Please sign in to comment.