Home | History | Annotate | Download | only in recovery
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #include <linux/input.h>
     18 
     19 #include "common.h"
     20 #include "device.h"
     21 #include "screen_ui.h"
     22 
     23 static const char* HEADERS[] = { "Volume up/down to move highlight;",
     24                                  "enter button to select.",
     25                                  "",
     26                                  NULL };
     27 
     28 static const char* ITEMS[] =  {"reboot system now",
     29                                "apply update from ADB",
     30                                "wipe data/factory reset",
     31                                "wipe cache partition",
     32                                NULL };
     33 
     34 class DefaultUI : public ScreenRecoveryUI {
     35   public:
     36     virtual KeyAction CheckKey(int key) {
     37         if (key == KEY_HOME) {
     38             return TOGGLE;
     39         }
     40         return ENQUEUE;
     41     }
     42 };
     43 
     44 class DefaultDevice : public Device {
     45   public:
     46     DefaultDevice() :
     47         ui(new DefaultUI) {
     48     }
     49 
     50     RecoveryUI* GetUI() { return ui; }
     51 
     52     int HandleMenuKey(int key, int visible) {
     53         if (visible) {
     54             switch (key) {
     55               case KEY_DOWN:
     56               case KEY_VOLUMEDOWN:
     57                 return kHighlightDown;
     58 
     59               case KEY_UP:
     60               case KEY_VOLUMEUP:
     61                 return kHighlightUp;
     62 
     63               case KEY_ENTER:
     64                 return kInvokeItem;
     65             }
     66         }
     67 
     68         return kNoAction;
     69     }
     70 
     71     BuiltinAction InvokeMenuItem(int menu_position) {
     72         switch (menu_position) {
     73           case 0: return REBOOT;
     74           case 1: return APPLY_ADB_SIDELOAD;
     75           case 2: return WIPE_DATA;
     76           case 3: return WIPE_CACHE;
     77           default: return NO_ACTION;
     78         }
     79     }
     80 
     81     const char* const* GetMenuHeaders() { return HEADERS; }
     82     const char* const* GetMenuItems() { return ITEMS; }
     83 
     84   private:
     85     RecoveryUI* ui;
     86 };
     87 
     88 Device* make_device() {
     89     return new DefaultDevice();
     90 }
     91