summaryrefslogtreecommitdiffstats
path: root/gui/gui.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2019-03-20Use listbox for device-specific advanced menu itemsEthan Yonker1-0/+7
This patch allows items to have more than one action surrounded by the <actions> tags like other GUI elements. The patch also adds new twrp command line options that let you reload the theme and switch to a specific page from the command line: adb shell twrp reloadtheme adb shell twrp changepage=advanced Change-Id: I838ea380a508be07b9fa617034d1954e116febd6
2017-11-28Support v2 fstab formatEthan Yonker1-16/+30
Auto detect and support both the v1 and v2 fstab formats Support putting TWRP style flags in a separate /etc/twrp.flags file twrp.flags format is the same as twrp.fstab (v1 with TWRP flags) Support using a wildcard in a block device and find all partitions: /usb-otg vfat /dev/block/sda* Support using sysfs entries (voldmanaged) and read uevents and scan for wildcard partitions from uevent data. (twvold?) May not be complete for some of the newer flags found in fstabs in newer build trees and there is a slim chance of a crash if the user removes a removable device while TWRP is performing actions. May need to add some kind of mutex to prevent the 2 threads from causing this crash. We need to start somewhere though and this change is pretty innocuous when not using a v2 fstab. Change-Id: I617d97c7db332cbe671a9d2b8ad98b3d9c4f03cc
2017-11-27ADB Backup: add ability for TWRP GUI to restorebigbiff bigbiff1-8/+0
Restore adb backup files that TWRP made to your PC. Put files in your backup directory to see them. e.g. /sdcard/TWRP/BACKUPS/<sn> Change-Id: I2c57970d77b64c39a302159041456e761c185259
2017-01-18GUI: Mark local flip() function as staticMatt Mower1-1/+1
Change-Id: Ib92e294872c1408cc749fdb0db3bbf56579eb070
2017-01-18gui: Actions: Toggle backlight on power keyMatt Mower1-1/+3
Create GUIAction to handle KEY_POWER with a screen backlight toggle. Change-Id: Iad0a7923b4a776e0336722db74d6fc46cd0107a2
2017-01-18Whitespace cleanupMatt Mower1-8/+8
Change-Id: I93c65973679894bb8587da4b38b410d38036b8bd
2016-08-01ADB: Add adb backup for TWRP.bigbiff1-2/+8
Functionality for client side to backup tar and image streams over adbd to the client under backup.ab. Using adb backup on the client side you can backup the partitions TWRP knows about. On the client side you can do the following: adb backup -f <filename> --twrp <options> where options are --compress: compress data system: backup system cache: backup cache data: backup data boot: backup boot etc for each partition. You can string multiple options, i.e. adb backup -f <filename> --twrp --compress cache system data adb backup in TWRP will take any option corresponding to TWRP fstab partitions, e.g. efs boot as well. If you do not specify the filename with the -f option, adb will backup your data to a filename backup.ab on the client. You can then rename the file and encrypt it with desktop tools. If you don't want to use command line arguments: adb backup --twrp will bring up the gui and allow you to choose partitions from the backup page. To restore the backup use the following convention: adb restore <filename> Structures are used to store metadata in binary inside of the file itself. If the metadata structure is modified, update the adb version so that it will invalidate older backups and not cause issues on restore. When restoring, we currently do not support picking specific partitions. It's all or nothing. Change-Id: Idb92c37fc9801dc8d89ed2a4570e9d12e76facf8
2016-03-31Stop trying to load /script/ui.xmlEthan Yonker1-1/+1
I think this feature was used way back in the very early days of TWRP 2.0 on the Kindle Fire and has not been used since. I see no reason to keep it around for now and we can always reinstate it later if for some reason we need this feature again. Change-Id: Ie9f3e5db7190732f813ae1e152aab2d85a4ca98c
2016-02-19Fix OEM compileEthan Yonker1-2/+0
Change-Id: I39218f2485a2c2c95f0e400c31356bedc4973f6c
2016-02-05GUI: Set brightness after gr_init()Matt Mower1-0/+1
On at least one device I've tested (htc msm8960), setting the brightness after gr_init() is necessary for the splash to show. Note that at this point in the boot process, the settings file has not yet been read, so tw_brightness has its default value of max brightness. When settings are finally loaded, the correct brightness is loaded for the GUI. Change-Id: Ifc58c1dc80ed9e6f6b2a269a9bb6764038626c84
2016-01-27Update minuitwrp graphics in line with latest minuiEthan Yonker1-1/+1
Note: events.cpp is still old code renamed to cpp to make it easier to call functions like gr_fb_width(). I had to modify AOSP fbdev code to provide a separate memory surface for drawing to as drawing directly to the framebuffer resulted in rendering taking about 5 times longer. I also modified AOSP adf code to provide a separate memory surface for drawing for the same performance reasons. The Nexus 9 supports adf graphics. Overlay graphics work on at least one device. Overlay provides a separate memory buffer already so performance is good. I do not have a drm device yet that I know of. I made some attempt to update the drm code to determine the correct pixel format based on the drm graphics format, but what is available in pixel flinger and what is available in drm do not line up all that well. Reports are that the Pixel C is using drm graphics, but performance is slow, likely due to the use of a mmap instead of a memory buffyer. Change-Id: Ibd45bccca6ac2cb826037aa9b2aa5065cf683eed
2016-01-25gui: use XML-based page for splash screen instead of a static jpgthat1-109/+8
For devices with an unusual aspect ratio, stretching a bitmap to the screen resolution is sub-optimal. So let's reuse our XML engine that allows assembling the splash screen from individual parts. The splash page is loaded from a separate XML file for quick loading. Change-Id: I2d3dad26e42fcefaf563dacdf0ffa61f209dada1
2016-01-23Update mStartPage to make language selection work on other pagesEthan Yonker1-2/+4
We should offer language selection on any start page such as decrypt or system read only. However, if the mStartPage variable was not being updated properly so selecting a different language was dumping the user back on either the decrypt prompt or the system read only page. This patch set fixes the problem and places the user back on the proper page when they choose a new language. Change-Id: I5153d3b9525d8c93d3863f4b17ecf55b5209e3c7
2016-01-07gui: add terminal emulatorthat1-0/+14
Emulates enough of a VT-100 to run busybox vi. Change-Id: I99c829c6c9de2246194ecb8b8b3cdf4ac34a0606
2015-12-29get rid of console thread for OpenRecoveryScriptthat1-119/+42
- CLI commands run in a threaded action "twcmd" - Console is displayed via "singleaction_page" - move ORS execution code from GUI action to OpenRecoveryScript class - remove unused function gui_changePackage - don't change PageManager package in home action - fix that /tmp/openrecoveryscript was not deleted after execution Change-Id: Ic688c0b04647ce09e9db979b0bc5123f47cf4f70
2015-12-19Multiple Language SupportEthan Yonker1-13/+46
This is similar to https://gerrit.omnirom.org/#/c/14014 A lot of the features built in the older patch set have been split out into separate patches, most of which have already been merged. The remaining functionality here should all be directly related to language selection and loading. We always load English as a base before loading other languages over the top of the base. The idea is that if another language is missing a translation, then we will still display the English. Maybe still to do: read the /cache/recovery/last_locale file and load a language based on that. For me, this file contains just: en_US We probably won't bother with region specific translations so we would have to look at either trimming off the _US or using some other method like perhaps a symlink or a combination of the two. Thanks to _that for twmsg.cpp class Change-Id: I9647a22e47883a3ddd2de1da51f64aab7c328f74
2015-11-09Move reloading of theme outside of the action threadEthan Yonker1-0/+2
Reloading the GUI while the GUI is running and rendering is very dangerous as we may be deleting GUI resources before or while we are trying to render those same items. This change will allow us to safely load new resources and delete the old ones. Fixed a double free situation that was causing a crash on every other theme reload. Clear parsed xml documents when we are done loading the theme instead of keeping them in memory for the life of the theme to help save a little memory. Store starting page so that if we request a reload, we can enter the theme at the same starting point, which may come in handy if we allow for language selection on alternate starting pages such as the decrypt prompt or the system read only prompt. Change-Id: I45a7e3fb3daeefac56d70f8d4936938eb1244b99
2015-10-25Fix a bunch of warningsEthan Yonker1-2/+2
Mostly adding __unused where needed. Change-Id: Ia4f675b9b360782728c361ed1699db0cc277c3a5
2015-03-19Allow multiple overlaysEthan Yonker1-0/+1
This effectively allows us to support popup dialogs and the like. Change-Id: Iafb3fa60ed635287cb59dce118f74dc8f2a4e60a
2015-03-13Allow touch to use a key code to sync touch eventsEthan Yonker1-0/+17
This is needed to make touch work on the x86-64 emulator target though I have seen the key code used on other devices as a way to synchronize touch events. Change-Id: I31a3cc56e6470f2c707641b537140e44f5e686aa
2015-03-13Reduce themes to 5 and rely on scalingEthan Yonker1-1/+1
This will significantly reduce theme maintainence and should be a lot more sustainable over time. Eliminate most themes leaving only 5 remaining in 3 categores: * watch_mdpi: 320x320 * portrait_mdpi: 480x800 * portrait_hdpi: 1080x1920 * landscape_mdpi: 800x480 * landscape_hdpi: 1920x1200 Add handling to map the old DEVICE RESOLUTION to the new TW_THEME build flag. New devices should specify a theme using the new TW_THEME build flag using one of the 5 values from the list above. Long term we will eliminate the use of the DEVICE_RESOLUTION flag in favor of the new flag. Change the way sliders render so that they completely follow the placement="5". This will probably break some custom themes but is necessary so that we can retain the aspect ratio on slider images and still have them rendered at the center of the screen. Add code to the console slideout button so that it can be centered. Centering the slideout button allows us to keep the button at the center of the screen when retaining aspect ratios on the image. Add more retain aspect ratios for home, back, slideout, folder, file, and lock screen images. Change the way we build the top bar in TWRP. It is now mostly drawn using fill objects and the TWRP logo is a separate image so that we can retain its aspect ratio during scaling. Thanks to Mark Norelus for providing the TWRP logo. Change-Id: I801a7b3163cad9ef353461f4c327690a9ccbb3aa
2015-03-11gui: support string resourcesthat1-10/+12
storing strings in a map (for fast lookup) in resource manager To define a string resource in <resources>: <string name="foo">Hello</string> To use a string, e.g.: <text>%@foo%</text> Not yet done: language-specific resources (should be solved not only for strings, but for all kinds of resources - e.g. for localized images) Change-Id: I3ba5cf5298c09e0d28a83973e9662f179271b33f
2015-02-23gui: don't truncate values to 0 after scalingthat1-2/+8
Avoids invisible lines (e.g. input cursor) when scaling down. Change-Id: I595e8bdb2fa468c30f104867ad77be2423ec287f
2015-02-10Scale the GUI to fit the screenEthan Yonker1-3/+61
With this patch set, if needed, we scale the images during early boot. TTF support is needed to properly scale the font. No font scaling is done on the old style fixed width font used in the console. Special thanks to _that for figuring out the scaling and blending function calls to make this possible. Change-Id: If2f79bef16d6db2e1298bfc3d00c9bcca2bee37a
2015-02-09gui: avoid high CPU usage while waiting for inputthat1-11/+20
- add a timeout to ev_get - set timeout to 1 second when idle - delay timeout for 15 frames to keep animation objects working - stop kinetic scrolling immediately at end of list Change-Id: I77138055c464b65b71e296f9c7ef63ea06809bc1
2015-02-09Reset data manager variables before running runPagesEthan Yonker1-1/+3
Fixes a problem where, if you decrypt the device, the promtp for installing SuperSU appears briefly before it automatically reboots without letting you confirm or deny. Change-Id: I6f7b1c7096e788ccabd8f5aac9eb01d38bfbc0f7
2015-02-01gui: fix lag (and event logging)that1-18/+18
- Process multiple input events per frame even if rendering takes longer than 33 ms. Limit minimum frames per second to 2 instead, allowing us to catch up with the input events. The lag was especially visible when using the mouse. - Move blankTimer calls to the main input function so that moving the mouse also unblanks. - Fix a compile error with event logging. Change-Id: If9e0360f5cc0562c4356611afc61b6d583fb1ec4
2015-01-30gui: move input handling into a classthat1-219/+243
Change-Id: I97e08a23369af0112875af84b3fb529cf42e929e
2015-01-30Move input handling into the main threadEthan Yonker1-150/+169
This also makes the hardwarekeyboard.cpp file that I created for the Asus Transformer tablets with a keyboard dock the default hardware keyboard handler. USB keyboards should work properly now if present for keyboard input. Change-Id: I724606e91ffe2a55265a9d1cb1ec714de244d38b
2015-01-27Use TWAtomicInt in gui.cpp to make it thread safeEthan Yonker1-35/+23
Change-Id: If05202355d3773e73541288c922fa6c69b1a9ad7
2015-01-22Use /twres instead of /res for theme resourcesDees Troy1-5/+7
AOSP and other ROM trees now do a rm -rf of the res folder during the ramdisk creation process that removes the TWRP resources. Using /twres instead of /res works around this issue making TWRP more compatible with AOSP and other build trees. Change-Id: I0d4c7e06ca381ac5aa0069b6f2b8c47f7dec49e7
2015-01-22Move ORS command line into main threadEthan Yonker1-139/+110
Also eliminate the mostly similar runPage function in favor of using a single runPages function to avoid code duplication. Change-Id: I46ef414beb4009fee16d4de13d8a5ab2b9678409
2015-01-13Fix handling of custom themes after decryptEthan Yonker1-0/+32
Loading a custom theme from the decrypt action was preventing the runPage function from exiting. This moves the loading of a custom theme out of the action. Change-Id: I86904b63a67a25ded56e3e1e569fe906264dc055
2015-01-11gui: simplify blanktimerthat1-34/+9
- get rid of separate thread, check timer in rendering thread instead - use an enum for the blanking state instead of magic integers - move #ifdefs for TW_NO_SCREEN_TIMEOUT inside blanktimer class - move some #includes and enum TOUCH_STATE to pages.hpp Change-Id: Id4b104e3680dc5db41d8ba85e32d722cf4086299
2015-01-09Allow for X and Y offsets in GUIEthan Yonker1-1/+1
These can be used to center a lower resolution theme onto a higher resolution screen. May be useful for Nexus 9 unless or until we decide to do a 1536x2048 theme or on devices like the Moto 360 and LG G Watch R. The build flags will only affect the stock theme. If a custom theme wishes to apply an offset, it can be done by setting tw_x_offset and / or tw_y_offset in the variables section of the XML. Change-Id: I2390769ed861b96a4a3bb8a0f06d9021ec91b6b9
2014-12-10Use one mizip for allEthan Yonker1-5/+0
The new minzip did not compile in older trees due to needing mmap64. For older trees we will just use mmap instead. Remove all files and code pertaining to minzipold. Updater should now build properly in older trees as well. Eliminate use of PLATFORM_VERSION in favor of PLATFORM_SDK_VERSION which should be more consistent and reliable. Change-Id: I38d2b604a73d1b17a2072c7d60e990b81ece0c10
2014-10-22Fix crash when rapid firing command line commandsEthan Yonker1-0/+4
Change-Id: I0caaa51720fe3608b8c4cb02f046afb3cbaa54f9
2014-08-09Add command line capabilitiesEthan Yonker1-1/+98
Allows sending openrecoveryscript commands to TWRP via shell. This may be handy for visually impaired users, for various one click utilities to drive TWRP commands from a computer, for using TWRP when a catastrophic hardware failure like a shattered screen prevents you from being able to use touch, or even on devices like a TV stick where touch and USB mouse input is unavailable. This patch also includes a few minor changes to openrecoveryscript including proper support for rebooting via the script and for decrypting the device via the command line. Change-Id: I796ad168efdd2da9c25334ac93d1079daaa7b0bc
2014-06-04Whitespace and minor code cleanupMatt Mower1-4/+1
This is by no means comprehensive, but is quite a bit better already. Change-Id: Ibc8654a5dfb0eec39cbd0b64bdb52bb4fbfe2f7e
2014-04-16Add support for actions triggered by key combinationVojtech Bocek1-17/+14
Change-Id: I9dfa7de40229f00412d63fc9c1eb3a809a6eb2e6 Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2014-04-15Fix touch on Sprint HTC One m8Dees Troy1-8/+10
Change-Id: Ia9fba3be16a33b3cb0c4a3458398a2e60ba7f001
2014-04-04Allow building of an OEM friendly TWRPEthan Yonker1-3/+5
Disable theming Disable creating the TWRP folder for the settings file Change factory reset on data/media devices to a full wipe Change-Id: I3104282b5dd3f55dfff7c8cf39c72750af08563d
2014-02-07Implement mouse cursorVojtech Bocek1-1/+62
Signed-off-by: Vojtech Bocek <vbocek@gmail.com> Change-Id: I66d6db7b3ed9cca50b469d125b36224332e06913
2014-02-06Add option to print render time of each frame to log fileVojtech Bocek1-0/+27
Signed-off-by: Vojtech Bocek <vbocek@gmail.com> Change-Id: Id158a6375fbadf4cdf0a8c7d143759e602419e7f
2013-10-24Update licenses to all matchDees Troy1-14/+16
Change-Id: I3be70a897e563658736b2dec3a9ea2697b69b225
2013-10-22Update licenses to all matchDees Troy1-14/+16
2013-09-10Kang in older minzip for building in CM9 & CM7Dees Troy1-0/+4
CM7 and CM9 do not have libselinux needed in the newer minzip.
2013-08-25Add a TW_NO_TIMEOUT optionRicardo Gomez1-0/+30
Change-Id: Ifb3a5bd9f1e6c2e9810c90b0aec198e91d5956fc
2013-08-24Unify indentation and little clean-up in TWRP filesVojtech Bocek1-433/+407
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
2013-08-24Revert "Fix touch not working due to gr_fb_width returning 0 in some cases"Dees_Troy1-3/+1
This reverts commit 70e1129612765b14e5aace0155d4683c91cde951. No longer needed after http://review.teamw.in/#/c/655/
2013-08-11Fix touch not working due to gr_fb_width returning 0 in some casesDees_Troy1-1/+3
Change-Id: Id5ce607a181110118ebc647fc07d387a7a3dc660
2013-04-05Improve handling of XML errors for fix permissionsDees_Troy1-1/+2
2013-04-04Move all AOSP code out of recovery binaryDees_Troy1-25/+23
Improves license compatibility between GPL and Apache Change-Id: I2b165aa575bb6213af6b07936f99610c113443f0
2013-02-28Load user saved setting for blank timer on recovery startupbigbiff bigbiff1-0/+3
Fix persistence of military time
2013-02-21Check for root and root perms and offer to install/fixDees_Troy1-0/+4
Also fix sort order for file selector by date and file sizes Change-Id: Idff9fe4232c19d4ed1082e78fabe6f921aa0a114
2013-02-13This adds a 60 second screen timeout for TWRP. Might consider making this configurable in the future.bigbiff bigbiff1-466/+546
Will also set overlay to lockscreen so we don't have inadvetent screen selections. Touching the screen will bring the display back up. add back check script for poweroff move diff time function to twrp-functions.cpp make sure we chmod after copy_file add read_file and write_file functions to twrp-functions.cpp make single thread try to force update screen add forceRender drop caches after tar processing Change-Id: I3c5c509dd39dbb05451bbfe5d8b56d53c90d8d1b
2013-01-25Use GUI for ORS instead of console onlyDees_Troy1-0/+1
2013-01-18Improve ORS sideload to display GUI with cancel buttonDees_Troy1-3/+77
2012-09-24Change curtain to file and remove curtain raiseDees_Troy1-36/+6
2012-09-07Add processing of fstab, mounting, and decryptDees_Troy1-17/+10
2012-09-05TWRP-ify AOSP codeDees_Troy1-0/+629
Pull in most TWRP sources Stub out partition management code Make it compile -- probably will not boot Kind of a mess but have to start somewhere