diff options
author | Doug Zongker <dougz@android.com> | 2011-10-31 17:34:15 +0100 |
---|---|---|
committer | Doug Zongker <dougz@android.com> | 2011-10-31 21:50:32 +0100 |
commit | 7d0542f28045640dfab6a259ae7bd796e653d66f (patch) | |
tree | 801e5acd7cb5a101182f325e1d4f343581b35801 /default_device.cpp | |
parent | refactor ui functions into a class (diff) | |
download | android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.tar android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.tar.gz android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.tar.bz2 android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.tar.lz android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.tar.xz android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.tar.zst android_bootable_recovery-7d0542f28045640dfab6a259ae7bd796e653d66f.zip |
Diffstat (limited to 'default_device.cpp')
-rw-r--r-- | default_device.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/default_device.cpp b/default_device.cpp new file mode 100644 index 000000000..265ed071e --- /dev/null +++ b/default_device.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <linux/input.h> + +#include "common.h" +#include "device.h" +#include "screen_ui.h" + +static const char* HEADERS[] = { "Volume up/down to move highlight;", + "enter button to select.", + "", + NULL }; + +static const char* ITEMS[] = {"reboot system now", + "apply update from external storage", + "apply update from cache", + "wipe data/factory reset", + "wipe cache partition", + NULL }; + +class DefaultUI : public ScreenRecoveryUI { + public: + virtual KeyAction CheckKey(int key) { + if (key == KEY_HOME) { + return TOGGLE; + } + return ENQUEUE; + } +}; + +class DefaultDevice : public Device { + public: + DefaultDevice() : + ui(new DefaultUI) { + } + + RecoveryUI* GetUI() { return ui; } + + int HandleMenuKey(int key, int visible) { + if (visible) { + switch (key) { + case KEY_DOWN: + case KEY_VOLUMEDOWN: + return kHighlightDown; + + case KEY_UP: + case KEY_VOLUMEUP: + return kHighlightUp; + + case KEY_ENTER: + return kInvokeItem; + } + } + + return kNoAction; + } + + BuiltinAction InvokeMenuItem(int menu_position) { + switch (menu_position) { + case 0: return REBOOT; + case 1: return APPLY_EXT; + case 2: return APPLY_CACHE; + case 3: return WIPE_DATA; + case 4: return WIPE_CACHE; + default: return NO_ACTION; + } + } + + const char* const* GetMenuHeaders() { return HEADERS; } + const char* const* GetMenuItems() { return ITEMS; } + + private: + RecoveryUI* ui; +}; + +Device* make_device() { + return new DefaultDevice(); +} |