summaryrefslogtreecommitdiffstats
path: root/wear_ui.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-11-05ui: Manage loaded resources with smart pointers.Tao Bao1-3/+3
Test: Run recovery_unit_test on marlin. Test: `Run graphics test` on marlin. Change-Id: I8239c3d9fb288f80ee11f615402768ff8ef8ecd0
2018-10-23Add function to show localized rescue party menuTianjie Xu1-7/+8
Add a function in screenUI to display the pre-generated graphs for rescue party. If these graphs are not valid, falls back to display the old text strings. Right now we haven't generated the localized graphs yet, so the UI always shows the TextMenu. Bug: 116655889 Test: check rescue party under recovery Change-Id: I0558cb536b659cdc25c8b7946d3a39820935b003
2018-10-13Implement the graphic menusTianjie Xu1-3/+4
As we plan to show localized rescue party dialogs under recovery mode with pre-generated images, it becomes necessary to show the menu headers and items with images. This cl converts the menu class to a interface and derived TextMenu & GraphicMenu classes. And the GraphicMenu uses GRSurfaces* as the menu header and a list of GRSurfaces* as menu items. Moreover, factor out the Draw* functions in the ScreenUI into a separate DrawInterface. Therefore, the Menu class can access these draw functions and use them to implement the DrawHeaders & DrawItems neatly. Bug: 74397117 Test: unittests pass, boot into recovery and check menu Change-Id: I95cee30f3e5eb666eb6fbcdfc873a7260fc177c1
2018-08-01ui: Read custom recovery UI values via system property.Tao Bao1-5/+10
The matching change to build system now writes these values as build properties for recovery image. This allows us dropping the dependency on Android.mk (as well as having more flexibility to do UI customization). Also rename a few constant names, as the naming doesn't fully follow the style guide (which reads "whose value is fixed for the duration of the program"). Bug: 110380063 Test: Build and flash recovery image on taimen, which uses custom margin height. Check the UI and choose `Run graphics test`. Change-Id: I2c50326123639cb36022f51b62cdeed925d77ba7
2018-07-20Updates Wear UI to Display Localized Recovery Text.Karl Shaffer1-0/+7
Updates Wear Recovery UI to fix bug. Recovery UI now will display the proper Recovery Text during progress actions above the ProgressBarBaseline as defined in device make files. Change-Id: Idef0cb046dd06979042ca877ba0c61e9faaedec1 Bug: 64330124 (cherry picked from commit 19f6cccdafe53e14b9cd083e69da5887028070a0)
2018-05-30recovery: c++ify pthread use in UIJerry Zhang1-3/+1
Change pthread usage to std::mutex, lock_guard, unique_lock, thread, or condition_variable as appropriate. Test: Recovery works, recovery_component_test pass Bug: 78793464 Change-Id: Ibf0b1bbedcf0b6e32fc4ee6aaadd17f21b4d7077
2018-05-14wear_ui: Address a TODO regarding {intro,loop}_frames.Tao Bao1-5/+0
Also add tests for LoadAnimation that cover the change. Test: Run `recovery_unit_test` on marlin. Change-Id: I0380a5cdd0d85d55baecf7759eb647b6a9f3a085
2018-05-03Move menu headers/items to std::vector<std::string>.Tao Bao1-3/+3
Test: mmma -j bootable/recovery Test: Run recovery_unit_test on marlin. Test: Build and boot into recovery image on angler. Check the UI that shows menu ('View recovery log', 'Wipe data', 'Run locale test'). Test: Start recovery with '--prompt_and_wipe_data'. Check the UI. Change-Id: If8a4209e0bb4ca64f719f9f9465d3b3589a69cdc
2018-05-03screen_ui: Merge Menu::Start() into its ctor.Tao Bao1-2/+1
Since we instantiate a Menu object each time for a given set of header/items, we don't have a use case of re-populating an existing Menu with different data (which is what Menu::Start() does). Test: mmma -j bootable/recovery Test: Run recovery_unit_test on marlin. Test: Build and boot into recovery image on angler. Check the UI. Change-Id: Iaa2ba9d406ebd74c015e43198c17c5335b38df53
2018-05-03screen_ui: Use std::string in DrawTextLine() and siblings.Tao Bao1-8/+8
Test: mmma -j bootable/recovery Test: Build and boot into recovery image on angler. Check the UI. Test: Repeat the same test on devices using wearable UI. Change-Id: I1a67ff4ae8de4d7a8dc66326cf07f95c89e95152
2018-03-24Factor out a menu class for screen uiTianjie Xu1-107/+9
Also consolidate the duplicate codes to draw the menu in ScreenRecoveryUI and WearRecoveryUI. This helps us to support text icons as menu in the future. Bug: 74397117 Test: Check the menu under recovery on bullhead and a wear device. Change-Id: Iba9b646c3828670f0e78a7e07d1a94a44e96bb0b Merged-In: Iba9b646c3828670f0e78a7e07d1a94a44e96bb0b
2018-03-24Factor out a menu class for screen uiTianjie Xu1-107/+9
Also consolidate the duplicate codes to draw the menu in ScreenRecoveryUI and WearRecoveryUI. This helps us to support text icons as menu in the future. Bug: 74397117 Test: Check the menu under recovery on bullhead and a wear device. Change-Id: Iba9b646c3828670f0e78a7e07d1a94a44e96bb0b (cherry picked from commit 2b3f80068ece1040ba7c923afe1e70b705535ad5)
2017-10-12Drop -Wno-unused-parameter.Tao Bao1-2/+1
The only one left is libedify. Will handle that in a separate CL. Test: mmma bootable/recovery Change-Id: I732a5f85229da90fd767bee2e46c5c95f529c396
2017-09-09ui: Remove text_top_.Tao Bao1-1/+1
After the cleanup to WearRecoveryUI, text_top_ now always equals to ((text_row_ + 1) % text_rows_). Test: Check the recovery UI and 'View recovery logs'. Change-Id: I69a7f377bbd990db2194f9d3efae257c323c06a8
2017-09-09ui: Manage menu_ with std::vector.Tao Bao1-7/+6
Prior to this CL, menu_ is allocated with a fixed length of text_rows_. However, because we support scrollable menu in wear_ui, there might be more menu entries than text_rows_, which would lead to out-of-bounds array access. This CL addresses the issue by switching to std::vector. Bug: 65416558 Test: Run 'View recovery logs' on angler. Test: Set large margin height that leaves text_rows less than 21. Then run 'View recovery logs' with 21 menu entries. Change-Id: I5d4e3a0a097039e1104eda7d494c6269053dc894 (cherry picked from commit e15d7a5104978cd8399501636aec0df9c1a4823c)
2017-09-08wear_ui: Remove Print()/ShowFile()/PutChar().Tao Bao1-113/+1
They're mostly identical to the ones in ScreenRecoveryUI, except for the (legacy) use of 'text_top_'. Because wear_ui.cpp misses the change in [1] that uses an alternate screen for viewing recovery logs. Also clean up the included headers. [1] commit c049163234003ef463bca018920622bc8269c69b ('Add an alternate screen for viewing recovery logs.'). Test: Build a wearable target recovery; `View recovery logs`. Change-Id: Ic9208c42a11c037469f5b073ef7d9b721c14d1f3
2017-09-08ui: Manage menu_ with std::vector.Tao Bao1-7/+6
Prior to this CL, menu_ is allocated with a fixed length of text_rows_. However, because we support scrollable menu in wear_ui, there might be more menu entries than text_rows_, which would lead to out-of-bounds array access. This CL addresses the issue by switching to std::vector. Bug: 65416558 Test: Run 'View recovery logs' on angler. Test: Set large margin height that leaves text_rows less than 21. Then run 'View recovery logs' with 21 menu entries. Change-Id: I5d4e3a0a097039e1104eda7d494c6269053dc894
2017-09-01wear_ui: Remove PrintOnScreenOnly() and PrintV().Tao Bao1-33/+1
They're just copy/pastes from the base class (ScreenRecoveryUI). Test: mmma bootable/recovery Change-Id: I341416107a14d89d3366bba757da0b1abb988b15
2017-08-31wear_ui: Remove backgroundIcon.Tao Bao1-34/+6
It's covered by the equivalent variable in ScreenRecoveryUI: GRSurface* error_icon; Also refactor WearRecoveryUI::draw_background_locked() to get it closer to ScreenRecoveryUI code. Test: Build a wearable target recovery; Run graphics test. Change-Id: I3a8d0e4dbf6fe170e4f3adde7eaf4a2043132a57
2017-08-29Turn on -Wall for recovery modulesTianjie Xu1-8/+0
Turn on -Wall for all modules. Also remove the obsolete file_cmp() in apply_patch test and now() in wear_ui. The only exception is lib_edify due to the unused functions in the intermediate cpp files generated from the lex files. It will be handled in a seperate CL. Bug: 64939312 Test: mma, unit tests pass Change-Id: Ic53f76b60b6401ab20db3d98130d674c08e3702f
2017-08-26wear_ui: Remove kMaxCols/kMaxRows/visible_text_rows/menu_headers_.Tao Bao1-15/+1
We've deprecated kMaxCols/kMaxRows in ScreenRecoveryUI since commit aa0d6afb61f4cf928e87c7a21bcb59fc973f15a0. They unnecessarily limit the screen size to 96x96 characters. Also remove the recomputations of text_cols, visible_text_rows (which is the same as text_rows_). Remove the unintentional hiding of menu_headers_. Test: mmma bootable/recovery Change-Id: I7d1526b651943312d62d52cd200414b42bf9b12a
2017-08-26wear_ui: Remove dead 'self' and 'progress_t'.Tao Bao1-7/+1
They were once used for progress_thread() that's pthread_create'd by WearRecoveryUI::Init(). They have become dead since the removal of progress_thread() (commit ad8b5a6c1195b94d8d80671e1bf791c32008fbef). Also add the missing include of <pthread.h> for pthread_mutex_lock(). Test: lunch a watch target and `m recoveryimage`. Change-Id: I748cf4511434ac4ce97dddf89b0e42e68a5da04b
2017-08-13wear_ui: Expose menu_unusable_rows via Makefile var.Tao Bao1-3/+4
This variable is useful on small screens (e.g. on watches) to handle long menus. We should have better way to handle this value smartly. Prior to that, expose the value to be overridable by using the generic wearable UI module (librecovery_ui_wear). Bug: 64307776 Test: Define the variable, build and boot into recovery image and check the UI menu. Change-Id: I5d7a6baa8bb4cc852bfcc2a7b3cc9686c1c8817e (cherry picked from commit eea3af3f911d36ac1a82a9fb95d24912cc07e3b1)
2017-08-13Allow customizing WearRecoveryUI via Makefile variables.Tao Bao1-8/+13
With the following Makefile variables, we can reduce the work of writing (copy/pasting) device-specific WearRecoveryUI classes. The list of Makefile variables (the ones useful for Wear devices): - TARGET_RECOVERY_UI_MARGIN_HEIGHT (default: 0) - TARGET_RECOVERY_UI_MARGIN_WIDTH (default: 0) Specify the margin space that we don't want to display texts. They replace the former outer_width and outer_height. - TARGET_RECOVERY_UI_TOUCH_LOW_THRESHOLD (default: 50) - TARGET_RECOVERY_UI_TOUCH_HIGH_THRESHOLD (default: 90) Specify the sensitivity of recognizing a swipe. Devices give absolute positions, so for some devices we need to adjust the thresholds. - TARGET_RECOVERY_UI_PROGRESS_BAR_BASELINE Specify the progress bar vertical position, which should be adjusted to the actual height of a device. It replaces the former progress_bar_y. - TARGET_RECOVERY_UI_ANIMATION_FPS (default: 30) Specify the animation FPS if using device-specific animation images. It replaces the former animation_fps. Devices can specify "TARGET_RECOVERY_UI_LIB := librecovery_ui_wear", with optionally defined Makefile vars above, in BoardConfig.mk to customize their WearRecoveryUI. Also remove the obsolete wear_touch.{cpp,h}, which has been merged into ui.cpp in commit 5f8dd9951d986b65d98d6a9ea38003427e9e46df. Bug: 64307776 Test: Change the device BoardConfig.mk and test recovery image. Change-Id: Id0fb2d4e3977ab5ddd31e71f9535470cab70e41b (cherry picked from commit 0470ceea381775b09eee931858c3320be88cc637)
2017-08-11wear_ui: Expose menu_unusable_rows via Makefile var.Tao Bao1-3/+4
This variable is useful on small screens (e.g. on watches) to handle long menus. We should have better way to handle this value smartly. Prior to that, expose the value to be overridable by using the generic wearable UI module (librecovery_ui_wear). Bug: 64307776 Test: Define the variable, build and boot into recovery image and check the UI menu. Change-Id: I5d7a6baa8bb4cc852bfcc2a7b3cc9686c1c8817e
2017-08-10Allow customizing WearRecoveryUI via Makefile variables.Tao Bao1-8/+13
With the following Makefile variables, we can reduce the work of writing (copy/pasting) device-specific WearRecoveryUI classes. The list of Makefile variables (the ones useful for Wear devices): - TARGET_RECOVERY_UI_MARGIN_HEIGHT (default: 0) - TARGET_RECOVERY_UI_MARGIN_WIDTH (default: 0) Specify the margin space that we don't want to display texts. They replace the former outer_width and outer_height. - TARGET_RECOVERY_UI_TOUCH_LOW_THRESHOLD (default: 50) - TARGET_RECOVERY_UI_TOUCH_HIGH_THRESHOLD (default: 90) Specify the sensitivity of recognizing a swipe. Devices give absolute positions, so for some devices we need to adjust the thresholds. - TARGET_RECOVERY_UI_PROGRESS_BAR_BASELINE Specify the progress bar vertical position, which should be adjusted to the actual height of a device. It replaces the former progress_bar_y. - TARGET_RECOVERY_UI_ANIMATION_FPS (default: 30) Specify the animation FPS if using device-specific animation images. It replaces the former animation_fps. Devices can specify "TARGET_RECOVERY_UI_LIB := librecovery_ui_wear", with optionally defined Makefile vars above, in BoardConfig.mk to customize their WearRecoveryUI. Also remove the obsolete wear_touch.{cpp,h}, which has been merged into ui.cpp in commit 5f8dd9951d986b65d98d6a9ea38003427e9e46df. Bug: 64307776 Test: Change the device BoardConfig.mk and test recovery image. Change-Id: Id0fb2d4e3977ab5ddd31e71f9535470cab70e41b
2017-07-02Update ScreenRecoveryUI::Draw* function signatures.Tao Bao1-5/+5
Move away from taking int* for the Y-offset. Change it to int and return the offset instead. Test: Check the recovery menu and 'Wipe data' menu. Change-Id: Ib15e070a0d576a0f8f66f35605cb8479e7071f26
2017-06-29wear_ui: Remove dead/duplicate codes.Tao Bao1-11/+0
WearRecoveryUI::draw_progress_locked() has declaration only, where the definition was deleted in commit 5e7cfb9af64d5f6bf616d9b6fa40bd0ae82e781a. WearRecoveryUI::ClearText() is a duplicates of ScreenRecoveryUI::ClearText(). Test: Build swordfish recovery image. 'Run graphics test' and 'View recovery logs'. Change-Id: Ib66955d1d496f04359b4d6487160218e8f954478
2017-06-24Add override specifier and member constness to RecoveryUI classes.Tao Bao1-1/+1
Test: mmma bootable/recovery Change-Id: I66e328614423488a4027d7878f4569fbf3a3721e
2017-06-24Formatting RecoveryUI related files.Tao Bao1-256/+247
All cosmetic changes about indentation reformatting in this CL. Test: mmma bootable/recovery Change-Id: I4539e6244697d1f356b7eb10b961b52d7db561f7
2017-01-17minui: Export minui/minui.h.Tao Bao1-3/+5
For libminui static and shared libraries. Test: build Change-Id: Ib30dc5e2ef4a3c8b3ca3a0cec68cb65e229a0c16
2017-01-04recovery: Fix the broken UI text.Tao Bao1-36/+35
UI text is broken (doesn't show any text during FDR) due to commit d530449e54bd327e9c26209ffa0490c6508afe6c, which reordered the calls to RecoveryUI::SetLocale() and RecoveryUI::Init(). Because Init() uses the locale info to load the localized texts (from images), the locale must be set prior to that via SetLocale(). This CL refactors Init() to take the locale parameter, and removes the odd SetLocale() API. Bug: 34029338 Test: 'Run graphics test' under recovery. Change-Id: I620394a3d4e3705e9af5a1f6299285d143ae1b01
2017-01-04Remove outdated reference to icon_installing.pngTim Kryger1-2/+4
The Wear recovery UI doesn't draw the installing icon but it was still trying to open it. Ever since these images were removed eight months ago, this has resulted in an error printing to the screen at runtime. Since the image wasn't really used, the lines to open it can simply be removed. Bug: 33203397 Change-Id: Id820f6d75e316c51d19b6095df407ecd61c0410e (cherry picked from commit 48be23c8ed0bcceda1abd80e1df4d1abc20f042f)
2016-12-13Add a stub recovery UI.Sen Jiang1-4/+10
This allows recovery to work on devices without screen. The stub recovery UI does nothing except print to stdout. Test: write 'recovery\n--wipe_data\n--reason=wipe_data_from_ota\n' to misc and boot to recovery on a device without screen. Bug: 33175036 Change-Id: Icde698aa2e2e29f4b3d0532dfd3c6a939ac2bc63
2016-11-29Remove outdated reference to icon_installing.pngTim Kryger1-2/+3
The Wear recovery UI doesn't draw the installing icon but it was still trying to open it. Ever since these images were removed eight months ago, this has resulted in an error printing to the screen at runtime. Since the image wasn't really used, the lines to open it can simply be removed. Bug: 33203397 Change-Id: Id820f6d75e316c51d19b6095df407ecd61c0410e
2016-11-15Support use of custom fonts in miniuiDamien Bargiacchi1-6/+6
Bug: 29547343 Change-Id: I398160c85daac90ffab2fa9bb2e96795b9e9885a (cherry picked from commit 35fff61b1c0d736d090a1cd1bb4e99141cc88ad8)
2016-09-26Switch to <android-base/properties.h>.Elliott Hughes1-3/+3
Bug: http://b/23102347 Test: boot into recovery. Change-Id: Ib2ca560f1312961c21fbaa294bb068de19cb883e Merged-In: Ib2ca560f1312961c21fbaa294bb068de19cb883e
2016-09-24Switch to <android-base/properties.h>.Elliott Hughes1-3/+3
Bug: http://b/23102347 Test: boot into recovery. Change-Id: Ib2ca560f1312961c21fbaa294bb068de19cb883e
2016-09-09Remove duplicate thread loopDamien Bargiacchi1-52/+4
Fixes animation running at 2x speed Change-Id: Ieec353097b6eee1cf40530e6f4f1e69927d2bc98
2016-09-07Remove duplicate methods and variables from WearRecoveryUIDamien Bargiacchi1-236/+77
Copy pasta is never as delicious as ones hopes. Also fix the Pike not rendering recovery bug. Change-Id: I903da7da436e3347a22ff51633e8a0f28fea2c46
2016-08-19Support use of custom fonts in miniuiDamien Bargiacchi1-6/+6
Bug: 29547343 Change-Id: I398160c85daac90ffab2fa9bb2e96795b9e9885a
2016-06-07recovery: Make wear recovery more customizable.Alain Vongsouvanh1-1/+1
Making animation_fps protected and adding support for 0 frames intro. BUG: 29085786 Change-Id: I07b44570022bad89661973178d453592c01f3f10
2016-04-18Fix google-runtime-int warnings.Chih-Hung Hsieh1-5/+5
Bug: 28220065 Change-Id: Ida199c66692a1638be6990d583d2ed42583fb592
2016-03-12recovery: Remove SetColor, and other refactoring for WearUIPrashant Malani1-47/+9
The only difference from SetColor in ScreenRecoveryUI is the that the LOG messages have slightly different colors. That's not enough to warrant a duplicate function. So this patch removes SetColor and uses the parent class version. This patch also moves the DrawTextLine* functions into ScreenRecoveryUI since they're mostly the same. It also moves char_width and char_height into the class instead of keeping them as static variables. Bug: 27407422 Change-Id: I30428c9433baab8410cf710a01c9b1c44c217bf1
2016-03-11recovery: Remove duplicate variables and functionsPrashant Malani1-9/+0
The function that modifies rtl_locale exists only in the base class, and so the variable should not have a duplicate in the derived class, otherwise there may be incosistent values when it is read by the derived class (the thinking being that invoking the function will modify the base class version of the variable, and not the derived class version). Remove the updateMutex variable, and instead re-use the one in the base class. Also remove LoadBitmap from WearUI since it is identical to the one in ScreenRecoveryUI. Bug: 27407422 Change-Id: Idd823fa93dfa16d7b2c9c7160f8d0c2559d28731
2016-03-10Revert "recovery: More refactoring of WearUI"Prashant Malani1-0/+69
This reverts commit 1c7b2230d8aac9f064f68c48b6aa26aca000cc9d. This change can lead to the derived class indirectly (and incorrectly) calling some functions from the base class, which can lead to unpredictable behavior. Bug: 27407422 Change-Id: I126a7489b0787dc195e942e2ceea6769de20d70c
2016-03-09recovery: More refactoring of WearUIPrashant Malani1-69/+0
This patch performs the following modifications: - Remove setBackground function, and currentIcon member variable. - Remove common Progress*, Redraw and EndMenu functions. Bug: 27407422 Change-Id: Ic3c0e16b67941484c3bc1d04c9b61288e8896808 Signed-off-by: Prashant Malani <pmalani@google.com>
2016-03-08recovery: Begin refactor of WearUI to use ScreenRecoveryUIPrashant Malani1-27/+0
This is the first of a series of changes which move WearUI to subclass ScreenRecoveryUI, to take advantage of several functions which are common between the two recovery UI implementations, and already defined in ScreenRecoveryUI. This patch changes the base class of WearUI, removes redundant header includes, and also removes a common function. Bug: 27407422 Change-Id: I8fd90826900f69272a82e23bd099790e8004d511
2016-02-27Fixes to wear recovery for NPrashant Malani1-0/+33
Bug: 27336841 Change-Id: If4632e9791cce2c39590a4012687271f59a60af1
2015-12-16res: Embed FPS into icon_installing.png.Tao Bao1-1/+1
We allow vendor-specific icon installing image but have defined private animation_fps that can't be overridden. This CL changes the image generator to optionally embed FPS (otherwise use the default value of 20) into the generated image. For wear devices, they are using individual images instead of the interlaced one. Change the animation_fps from private to protected so that it can be customized. Bug: 26009230 Change-Id: I9fbf64ec717029d4c54f72316f6cb079e8dbfb5e
2015-12-05Track rename from base/ to android-base/.Elliott Hughes1-1/+1
Change-Id: I354a8c424d340a9abe21fd716a4ee0d3b177d86f
2015-09-02recovery: Fix the bug that truncates menu entries.Tao Bao1-1/+6
When there are 20 entries (like 10 last_log* and 10 last_kmg* in "view recovery logs"), there's no "Back" entry. Because the number of entries (21) exceeds text_rows (20) in WearRecoveryUI::StartMenu(). Since we have scrollable menu, having more entries than text_rows won't be an issue. Bug: 23752519 Change-Id: I12573d7a34852a1a3d130c9e88522cee737eb08f
2015-08-25recovery: Factor out wear_ui.{cpp,h} into bootable/recovery.Tao Bao1-0/+650
Every watch has a (mostly identical) copy of the wear_ui. Factor them out into a single copy for easier maintenance. Device-specific settings should be defined in recovery_ui.cpp that inherits WearRecoveryUI class. Bug: 22451422 Change-Id: Id07efca37d1b1d330e6327506c7b73ccf6ae9241