summaryrefslogtreecommitdiffstats
path: root/gui/gui.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Use listbox for device-specific advanced menu itemsEthan Yonker2019-03-201-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
* Support v2 fstab formatEthan Yonker2017-11-281-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
* ADB Backup: add ability for TWRP GUI to restorebigbiff bigbiff2017-11-271-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
* GUI: Mark local flip() function as staticMatt Mower2017-01-181-1/+1
| | | | Change-Id: Ib92e294872c1408cc749fdb0db3bbf56579eb070
* gui: Actions: Toggle backlight on power keyMatt Mower2017-01-181-1/+3
| | | | | | Create GUIAction to handle KEY_POWER with a screen backlight toggle. Change-Id: Iad0a7923b4a776e0336722db74d6fc46cd0107a2
* Whitespace cleanupMatt Mower2017-01-181-8/+8
| | | | Change-Id: I93c65973679894bb8587da4b38b410d38036b8bd
* ADB: Add adb backup for TWRP.bigbiff2016-08-011-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
* Stop trying to load /script/ui.xmlEthan Yonker2016-03-311-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
* Fix OEM compileEthan Yonker2016-02-191-2/+0
| | | | Change-Id: I39218f2485a2c2c95f0e400c31356bedc4973f6c
* GUI: Set brightness after gr_init()Matt Mower2016-02-051-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
* Update minuitwrp graphics in line with latest minuiEthan Yonker2016-01-271-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
* gui: use XML-based page for splash screen instead of a static jpgthat2016-01-251-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
* Update mStartPage to make language selection work on other pagesEthan Yonker2016-01-231-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
* gui: add terminal emulatorthat2016-01-071-0/+14
| | | | | | Emulates enough of a VT-100 to run busybox vi. Change-Id: I99c829c6c9de2246194ecb8b8b3cdf4ac34a0606
* get rid of console thread for OpenRecoveryScriptthat2015-12-291-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
* Multiple Language SupportEthan Yonker2015-12-191-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
* Move reloading of theme outside of the action threadEthan Yonker2015-11-091-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
* Fix a bunch of warningsEthan Yonker2015-10-251-2/+2
| | | | | | Mostly adding __unused where needed. Change-Id: Ia4f675b9b360782728c361ed1699db0cc277c3a5
* Allow multiple overlaysEthan Yonker2015-03-191-0/+1
| | | | | | This effectively allows us to support popup dialogs and the like. Change-Id: Iafb3fa60ed635287cb59dce118f74dc8f2a4e60a
* Allow touch to use a key code to sync touch eventsEthan Yonker2015-03-131-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
* Reduce themes to 5 and rely on scalingEthan Yonker2015-03-131-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
* gui: support string resourcesthat2015-03-111-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
* gui: don't truncate values to 0 after scalingthat2015-02-231-2/+8
| | | | | | Avoids invisible lines (e.g. input cursor) when scaling down. Change-Id: I595e8bdb2fa468c30f104867ad77be2423ec287f
* Scale the GUI to fit the screenEthan Yonker2015-02-101-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
* gui: avoid high CPU usage while waiting for inputthat2015-02-091-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
* Reset data manager variables before running runPagesEthan Yonker2015-02-091-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
* gui: fix lag (and event logging)that2015-02-011-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
* gui: move input handling into a classthat2015-01-301-219/+243
| | | | Change-Id: I97e08a23369af0112875af84b3fb529cf42e929e
* Move input handling into the main threadEthan Yonker2015-01-301-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
* Use TWAtomicInt in gui.cpp to make it thread safeEthan Yonker2015-01-271-35/+23
| | | | Change-Id: If05202355d3773e73541288c922fa6c69b1a9ad7
* Use /twres instead of /res for theme resourcesDees Troy2015-01-221-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
* Move ORS command line into main threadEthan Yonker2015-01-221-139/+110
| | | | | | | Also eliminate the mostly similar runPage function in favor of using a single runPages function to avoid code duplication. Change-Id: I46ef414beb4009fee16d4de13d8a5ab2b9678409
* Fix handling of custom themes after decryptEthan Yonker2015-01-131-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
* gui: simplify blanktimerthat2015-01-111-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
* Allow for X and Y offsets in GUIEthan Yonker2015-01-091-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
* Use one mizip for allEthan Yonker2014-12-101-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
* Fix crash when rapid firing command line commandsEthan Yonker2014-10-221-0/+4
| | | | Change-Id: I0caaa51720fe3608b8c4cb02f046afb3cbaa54f9
* Add command line capabilitiesEthan Yonker2014-08-091-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
* Whitespace and minor code cleanupMatt Mower2014-06-041-4/+1
| | | | | | This is by no means comprehensive, but is quite a bit better already. Change-Id: Ibc8654a5dfb0eec39cbd0b64bdb52bb4fbfe2f7e
* Add support for actions triggered by key combinationVojtech Bocek2014-04-161-17/+14
| | | | | Change-Id: I9dfa7de40229f00412d63fc9c1eb3a809a6eb2e6 Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
* Fix touch on Sprint HTC One m8Dees Troy2014-04-151-8/+10
| | | | Change-Id: Ia9fba3be16a33b3cb0c4a3458398a2e60ba7f001
* Allow building of an OEM friendly TWRPEthan Yonker2014-04-041-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
* Merge "Add option to print render time of each frame to log file" into android-4.4Dees Troy2014-02-071-0/+27
|\
| * Add option to print render time of each frame to log fileVojtech Bocek2014-02-061-0/+27
| | | | | | | | | | | | Signed-off-by: Vojtech Bocek <vbocek@gmail.com> Change-Id: Id158a6375fbadf4cdf0a8c7d143759e602419e7f
* | Implement mouse cursorVojtech Bocek2014-02-071-1/+62
|/ | | | | | Signed-off-by: Vojtech Bocek <vbocek@gmail.com> Change-Id: I66d6db7b3ed9cca50b469d125b36224332e06913
* Update licenses to all matchDees Troy2013-10-221-14/+16
|
* Kang in older minzip for building in CM9 & CM7Dees Troy2013-09-101-0/+4
| | | | CM7 and CM9 do not have libselinux needed in the newer minzip.
* Add a TW_NO_TIMEOUT optionRicardo Gomez2013-08-251-0/+30
| | | | Change-Id: Ifb3a5bd9f1e6c2e9810c90b0aec198e91d5956fc
* Unify indentation and little clean-up in TWRP filesVojtech Bocek2013-08-241-433/+407
| | | | Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
* Revert "Fix touch not working due to gr_fb_width returning 0 in some cases"Dees_Troy2013-08-241-3/+1
| | | | | This reverts commit 70e1129612765b14e5aace0155d4683c91cde951. No longer needed after http://review.teamw.in/#/c/655/
* Fix touch not working due to gr_fb_width returning 0 in some casesDees_Troy2013-08-111-1/+3
| | | | Change-Id: Id5ce607a181110118ebc647fc07d387a7a3dc660
* Improve handling of XML errors for fix permissionsDees_Troy2013-04-051-1/+2
|
* Move all AOSP code out of recovery binaryDees_Troy2013-04-041-25/+23
| | | | | | Improves license compatibility between GPL and Apache Change-Id: I2b165aa575bb6213af6b07936f99610c113443f0
* Load user saved setting for blank timer on recovery startupbigbiff bigbiff2013-02-281-0/+3
| | | | Fix persistence of military time
* Check for root and root perms and offer to install/fixDees_Troy2013-02-211-0/+4
| | | | | | Also fix sort order for file selector by date and file sizes Change-Id: Idff9fe4232c19d4ed1082e78fabe6f921aa0a114
* This adds a 60 second screen timeout for TWRP. Might consider making this configurable in the future.bigbiff bigbiff2013-02-131-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
* Use GUI for ORS instead of console onlyDees_Troy2013-01-251-0/+1
|
* Improve ORS sideload to display GUI with cancel buttonDees_Troy2013-01-181-3/+77
|
* Change curtain to file and remove curtain raiseDees_Troy2012-09-241-36/+6
|
* Add processing of fstab, mounting, and decryptDees_Troy2012-09-071-17/+10
|
* TWRP-ify AOSP codeDees_Troy2012-09-051-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