(menu_list.c) Add menu_list_get_size and menu_list_get_stack_size

This commit is contained in:
twinaphex 2014-10-17 21:41:23 +02:00
parent 77a131b0f9
commit 1daf8c354e
10 changed files with 46 additions and 25 deletions

View File

@ -43,7 +43,9 @@ void file_list_push(file_list_t *list,
size_t file_list_get_size(const file_list_t *list)
{
return list->size;
if (list)
return list->size;
return 0;
}
size_t file_list_get_directory_ptr(const file_list_t *list)

View File

@ -106,7 +106,7 @@ static int menu_action_ok(menu_file_list_cbs_t *cbs)
const char *path = NULL;
unsigned type = 0;
if (file_list_get_size(driver.menu->selection_buf) == 0)
if (menu_list_get_size() == 0)
return 0;
file_list_get_at_offset(driver.menu->selection_buf,
@ -208,12 +208,11 @@ static int menu_settings_iterate(unsigned action,
menu_navigation_decrement(driver.menu);
else
menu_navigation_set(driver.menu,
file_list_get_size(driver.menu->selection_buf) - 1);
menu_list_get_size() - 1);
break;
case MENU_ACTION_DOWN:
if ((driver.menu->selection_ptr + 1) <
file_list_get_size(driver.menu->selection_buf))
if ((driver.menu->selection_ptr + 1) < (menu_list_get_size()))
menu_navigation_increment(driver.menu);
else
menu_navigation_clear(driver.menu, false);
@ -489,7 +488,7 @@ static int menu_load_or_open_zip_iterate(unsigned action)
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label,
NULL);
if (file_list_get_size(driver.menu->selection_buf) == 0)
if (menu_list_get_size() == 0)
return 0;
file_list_get_at_offset(driver.menu->selection_buf,
@ -588,12 +587,11 @@ static int menu_common_iterate(unsigned action)
driver.menu->selection_ptr - scroll_speed);
else
menu_navigation_set(driver.menu,
file_list_get_size(driver.menu->selection_buf) - 1);
menu_list_get_size() - 1);
break;
case MENU_ACTION_DOWN:
if (driver.menu->selection_ptr + scroll_speed <
file_list_get_size(driver.menu->selection_buf))
if (driver.menu->selection_ptr + scroll_speed < (menu_list_get_size()))
menu_navigation_set(driver.menu,
driver.menu->selection_ptr + scroll_speed);
else
@ -609,8 +607,7 @@ static int menu_common_iterate(unsigned action)
break;
case MENU_ACTION_RIGHT:
if (driver.menu->selection_ptr + fast_scroll_speed <
file_list_get_size(driver.menu->selection_buf))
if (driver.menu->selection_ptr + fast_scroll_speed < (menu_list_get_size()))
menu_navigation_set(driver.menu,
driver.menu->selection_ptr + fast_scroll_speed);
else

View File

@ -20,6 +20,7 @@
#include <string.h>
#include <limits.h>
#include "../menu_list.h"
#include "../menu_common.h"
#include "../menu_driver.h"
#include "menu_display.h"
@ -240,12 +241,12 @@ static void glui_frame(void)
if (driver.menu->selection_ptr >= glui->term_height / 2)
begin = driver.menu->selection_ptr - glui->term_height / 2;
end = (driver.menu->selection_ptr + glui->term_height <=
file_list_get_size(driver.menu->selection_buf)) ?
menu_list_get_size()) ?
driver.menu->selection_ptr + glui->term_height :
file_list_get_size(driver.menu->selection_buf);
menu_list_get_size();
/* Do not scroll if all items are visible. */
if (file_list_get_size(driver.menu->selection_buf) <= glui->term_height)
if (menu_list_get_size() <= glui->term_height)
begin = 0;
if (end - begin > glui->term_height)

View File

@ -22,6 +22,7 @@
#include <limits.h>
#include "../menu_driver.h"
#include "../menu_list.h"
#include "../menu_common.h"
#include "../../../general.h"
#include "../../../config.def.h"
@ -278,12 +279,12 @@ static void rgui_render(void)
if (driver.menu->selection_ptr >= RGUI_TERM_HEIGHT / 2)
begin = driver.menu->selection_ptr - RGUI_TERM_HEIGHT / 2;
end = (driver.menu->selection_ptr + RGUI_TERM_HEIGHT <=
file_list_get_size(driver.menu->selection_buf)) ?
menu_list_get_size()) ?
driver.menu->selection_ptr + RGUI_TERM_HEIGHT :
file_list_get_size(driver.menu->selection_buf);
menu_list_get_size();
/* Do not scroll if all items are visible. */
if (file_list_get_size(driver.menu->selection_buf) <= RGUI_TERM_HEIGHT)
if (menu_list_get_size() <= RGUI_TERM_HEIGHT)
begin = 0;
if (end - begin > RGUI_TERM_HEIGHT)

View File

@ -142,11 +142,11 @@ static void rmenu_render(void)
begin = (menu->selection_ptr >= (ENTRIES_HEIGHT / 2)) ?
(menu->selection_ptr - (ENTRIES_HEIGHT / 2)) : 0;
end = ((menu->selection_ptr + ENTRIES_HEIGHT) <=
file_list_get_size(menu->selection_buf)) ?
menu_list_get_size()) ?
menu->selection_ptr + ENTRIES_HEIGHT :
file_list_get_size(menu->selection_buf);
menu_list_get_size();
if (file_list_get_size(menu->selection_buf) <= ENTRIES_HEIGHT)
if (menu_list_get_size() <= ENTRIES_HEIGHT)
begin = 0;
if (end - begin > ENTRIES_HEIGHT)

View File

@ -365,7 +365,7 @@ static void rmenu_xui_render(void)
return;
begin = driver.menu->selection_ptr;
end = file_list_get_size(driver.menu->selection_buf);
end = menu_list_get_size();
rmenu_xui_render_background();

View File

@ -20,6 +20,7 @@
#include <string.h>
#include <limits.h>
#include "../menu_list.h"
#include "../menu_common.h"
#include "../menu_driver.h"
#include "menu_display.h"
@ -354,7 +355,7 @@ static void xmb_selection_pointer_changed(void)
return;
current = driver.menu->selection_ptr;
end = file_list_get_size(driver.menu->selection_buf);
end = menu_list_get_size();
for (i = 0; i < end; i++)
{
@ -392,7 +393,7 @@ static void xmb_populate_entries(void *data, const char *path,
if (!xmb)
return;
xmb->depth = file_list_get_size(driver.menu->menu_stack);
xmb->depth = menu_list_get_stack_size();
if (xmb->depth > xmb->old_depth)
{
@ -451,7 +452,7 @@ static void xmb_frame(void)
xmb_draw_text(title_msg, xmb->title_margin_left,
gl->win_height - xmb->title_margin_top/2, 1, 1);
end = file_list_get_size(driver.menu->selection_buf);
end = menu_list_get_size();
current = driver.menu->selection_ptr;
for (i = 0; i < end; i++)

View File

@ -38,6 +38,20 @@ end:
file_list_free(list);
}
size_t menu_list_get_stack_size(void)
{
if (!driver.menu)
return 0;
return file_list_get_size(driver.menu->menu_stack);
}
size_t menu_list_get_size(void)
{
if (!driver.menu)
return 0;
return file_list_get_size(driver.menu->selection_buf);
}
void menu_list_flush_stack(file_list_t *list,
unsigned final_type)
{

View File

@ -38,6 +38,10 @@ void menu_list_pop_stack(file_list_t *list);
void menu_list_pop_stack_by_needle(file_list_t *list,
const char *needle);
size_t menu_list_get_stack_size(void);
size_t menu_list_get_size(void);
void menu_list_clear(file_list_t *list);
void menu_list_push(file_list_t *list,

View File

@ -21,6 +21,7 @@
#include <limits.h>
#include <ctype.h>
#include "menu_common.h"
#include "menu_list.h"
#include "menu_navigation.h"
void menu_navigation_clear(menu_handle_t *menu, bool pending_push)
@ -57,7 +58,7 @@ void menu_navigation_set(menu_handle_t *menu, size_t i)
void menu_navigation_set_last(menu_handle_t *menu)
{
menu->selection_ptr = file_list_get_size(menu->selection_buf) - 1;
menu->selection_ptr = menu_list_get_size() - 1;
if (driver.menu_ctx && driver.menu_ctx->navigation_set_last)
driver.menu_ctx->navigation_set_last(menu);