Example #1
0
STATUS wipe_menu_show(menuUnit *p)
{
    return_val_if_fail(p != NULL, RET_FAIL);
    int n = p->get_child_count(p);
    int selindex = 0;
    return_val_if_fail(n >= 1, RET_FAIL);
    return_val_if_fail(n < ITEM_COUNT, RET_FAIL);
    struct _menuUnit *temp = p->child;
    return_val_if_fail(temp != NULL, RET_FAIL);
    char **menu_item = malloc(n * sizeof(char *));
    assert_if_fail(menu_item != NULL);
    int i = 0;
    for (i = 0; i < n; i++)
    {
        menu_item[i] = temp->name;
        temp = temp->nextSilbing;
    }
    selindex = miui_mainmenu(p->name, menu_item, NULL, NULL, n);
    p->result = selindex;
    if (menu_item != NULL) free(menu_item);
    return p->result;
}
static STATUS mount_menu_show(menuUnit *p)
{
    //traverse all mount files
    //ensure cache
    miuiIntent_send(INTENT_ISMOUNT, 1, "/cache");
    if (miuiIntent_result_get_int() == 1)
    {
        menuUnit_set_icon(mount_cache_node, ICON_ENABLE);
        menuUnit_set_desc(mount_cache_node, MOUNT_DESC_MOUNT);
    }
    else
    {
        menuUnit_set_icon(mount_cache_node, ICON_DISABLE);
        menuUnit_set_desc(mount_cache_node, MOUNT_DESC_UNMOUNT);
    }
    //ensure data
    miuiIntent_send(INTENT_ISMOUNT, 1, "/data");
    if (miuiIntent_result_get_int() == 1)
    {
        menuUnit_set_icon(mount_data_node, ICON_ENABLE);
        menuUnit_set_desc(mount_data_node, MOUNT_DESC_MOUNT);
    }
    else
    {
        menuUnit_set_icon(mount_data_node, ICON_DISABLE);
        menuUnit_set_desc(mount_data_node, MOUNT_DESC_UNMOUNT);
    }
    //ensure system
    miuiIntent_send(INTENT_ISMOUNT, 1, "/system");
    if (miuiIntent_result_get_int() == 1)
    {
        menuUnit_set_icon(mount_system_node, ICON_ENABLE);
        menuUnit_set_desc(mount_system_node, MOUNT_DESC_MOUNT);
    }
    else
    {
        menuUnit_set_icon(mount_system_node, ICON_DISABLE);
        menuUnit_set_desc(mount_system_node, MOUNT_DESC_UNMOUNT);
    }
    //ensure sdcard 
    miuiIntent_send(INTENT_ISMOUNT, 1, "/sdcard");
    if (miuiIntent_result_get_int() == 1)
    {
        menuUnit_set_icon(mount_sd_node, ICON_ENABLE);
        menuUnit_set_desc(mount_sd_node, MOUNT_DESC_MOUNT);
    }
    else
    {
        menuUnit_set_icon(mount_sd_node, ICON_DISABLE);
        menuUnit_set_desc(mount_sd_node, MOUNT_DESC_UNMOUNT);
    }
    if (acfg()->sd_ext == 1)
    {
        //ensure sd-ext 
        miuiIntent_send(INTENT_ISMOUNT, 1, "/internal_sd");
        if (miuiIntent_result_get_int() == 1)
        {
            menuUnit_set_icon(mount_sd_ext_node, ICON_ENABLE);
            menuUnit_set_desc(mount_sd_ext_node, MOUNT_DESC_MOUNT);
        }
        else
        {
            menuUnit_set_icon(mount_sd_ext_node, ICON_DISABLE);
            menuUnit_set_desc(mount_sd_ext_node, MOUNT_DESC_UNMOUNT);
        }
    }

    //show menu
    return_val_if_fail(p != NULL, RET_FAIL);
    int n = p->get_child_count(p);
    return_val_if_fail(n > 0, RET_FAIL);
    int selindex = 0;
    return_val_if_fail(n >= 1, RET_FAIL);
    return_val_if_fail(n < ITEM_COUNT, RET_FAIL);
    struct _menuUnit *temp = p->child;
    return_val_if_fail(temp != NULL, RET_FAIL);
    char **menu_item = malloc(n * sizeof(char *));
    assert_if_fail(menu_item != NULL);
    char **icon_item=malloc(n * sizeof(char *));
    assert_if_fail(icon_item != NULL);
    char **title_item= malloc(n * sizeof(char *));
    assert_if_fail(title_item != NULL);
    int i = 0;
    for (i = 0; i < n; i++)
    {
        menu_item[i] = temp->name;
        title_item[i] = temp->title_name;
        icon_item[i] = temp->icon;
        temp = temp->nextSilbing;
    }
    selindex = miui_mainmenu(p->name, menu_item, NULL, icon_item, n);
    p->result = selindex;
    if (menu_item != NULL) free(menu_item);
    if (title_item != NULL) free(title_item);
    if (icon_item != NULL) free(icon_item);
    return p->result;
}