wlmaker
Loading...
Searching...
No Matches
Classes | Functions | Variables
menu.c File Reference
#include "menu.h"
#include <libbase/libbase.h>
#include <linux/input-event-codes.h>
#include <stdlib.h>
#include "input.h"
Include dependency graph for menu.c:

Classes

struct  _wlmtk_menu_t
 

Functions

static void _wlmtk_menu_eliminate_item (bs_dllist_node_t *dlnode_ptr, void *ud_ptr)
 
static void _wlmtk_menu_set_item_mode (bs_dllist_node_t *dlnode_ptr, void *ud_ptr)
 
static void _wlmtk_menu_element_destroy (wlmtk_element_t *element_ptr)
 
static bool _wlmtk_menu_element_pointer_button (wlmtk_element_t *element_ptr, const wlmtk_button_event_t *button_event_ptr)
 
wlmtk_menu_twlmtk_menu_create (const wlmtk_menu_style_t *style_ptr)
 
void wlmtk_menu_destroy (wlmtk_menu_t *menu_ptr)
 
wlmtk_element_twlmtk_menu_element (wlmtk_menu_t *menu_ptr)
 
wlmtk_pane_twlmtk_menu_pane (wlmtk_menu_t *menu_ptr)
 
wlmtk_menu_events_twlmtk_menu_events (wlmtk_menu_t *menu_ptr)
 
void wlmtk_menu_set_open (wlmtk_menu_t *menu_ptr, bool opened)
 
bool wlmtk_menu_is_open (wlmtk_menu_t *menu_ptr)
 
void wlmtk_menu_set_mode (wlmtk_menu_t *menu_ptr, enum wlmtk_menu_mode mode)
 
enum wlmtk_menu_mode wlmtk_menu_get_mode (wlmtk_menu_t *menu_ptr)
 
void wlmtk_menu_add_item (wlmtk_menu_t *menu_ptr, wlmtk_menu_item_t *menu_item_ptr)
 
void wlmtk_menu_remove_item (wlmtk_menu_t *menu_ptr, wlmtk_menu_item_t *menu_item_ptr)
 
void wlmtk_menu_request_item_highlight (wlmtk_menu_t *menu_ptr, wlmtk_menu_item_t *menu_item_ptr)
 
static void test_pointer_highlight (bs_test_t *test_ptr)
 
static void test_set_mode (bs_test_t *test_ptr)
 

Variables

static const wlmtk_element_vmt_t _wlmtk_menu_element_vmt
 
const bs_test_case_t wlmtk_menu_test_cases []
 
static const wlmtk_menu_style_t _test_style
 

Detailed Description

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

https://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.

Function Documentation

◆ _wlmtk_menu_element_destroy()

void _wlmtk_menu_element_destroy ( wlmtk_element_t element_ptr)
static

Wraps to dtor. Implements wlmtk_element_vmt_t::destroy.

◆ _wlmtk_menu_element_pointer_button()

bool _wlmtk_menu_element_pointer_button ( wlmtk_element_t element_ptr,
const wlmtk_button_event_t button_event_ptr 
)
static

If the menu is in right-click mode, acts on right-button events and signals the menu to close.

Implementation of wlmtk_element_vmt_t::pointer_button.

Parameters
element_ptr
button_event_ptr
Returns
whether the button event was claimed.

◆ _wlmtk_menu_eliminate_item()

void _wlmtk_menu_eliminate_item ( bs_dllist_node_t *  dlnode_ptr,
void *  ud_ptr 
)
static

Callback for bs_dllist_for_each: Removes item from items, destroys it.

◆ _wlmtk_menu_set_item_mode()

void _wlmtk_menu_set_item_mode ( bs_dllist_node_t *  dlnode_ptr,
void *  ud_ptr 
)
static

Callback for bs_dllist_for_each: Sets the menu mode for the item.

Parameters
dlnode_ptr
ud_ptr

◆ test_pointer_highlight()

void test_pointer_highlight ( bs_test_t *  test_ptr)
static

Tests that pointer moves highlight the items.

◆ test_set_mode()

void test_set_mode ( bs_test_t *  test_ptr)
static

Tests setting the menu's mode.

◆ wlmtk_menu_add_item()

void wlmtk_menu_add_item ( wlmtk_menu_t menu_ptr,
wlmtk_menu_item_t menu_item_ptr 
)

Adds a menu item to the menu.

Parameters
menu_ptr
menu_item_ptr

◆ wlmtk_menu_create()

wlmtk_menu_t * wlmtk_menu_create ( const wlmtk_menu_style_t style_ptr)

Creates a menu.

Parameters
style_ptr
Returns
Pointer to the menu state or NULL on error.

◆ wlmtk_menu_destroy()

void wlmtk_menu_destroy ( wlmtk_menu_t menu_ptr)

Destroys the menu.

Parameters
menu_ptr

◆ wlmtk_menu_element()

wlmtk_element_t * wlmtk_menu_element ( wlmtk_menu_t menu_ptr)
Returns
pointer to the menu's wlmtk_element_t superclass.

◆ wlmtk_menu_events()

wlmtk_menu_events_t * wlmtk_menu_events ( wlmtk_menu_t menu_ptr)
Returns
a pointer to wlmtk_menu_t::events.

◆ wlmtk_menu_get_mode()

enum wlmtk_menu_mode wlmtk_menu_get_mode ( wlmtk_menu_t menu_ptr)
Returns
mode of the menu.
See also
wlmtk_menu_set_mode.

◆ wlmtk_menu_is_open()

bool wlmtk_menu_is_open ( wlmtk_menu_t menu_ptr)
Returns
whether the menu is open, ie. visible.

◆ wlmtk_menu_pane()

wlmtk_pane_t * wlmtk_menu_pane ( wlmtk_menu_t menu_ptr)
Returns
pointer to the menu's wlmtk_pane_t superclass.

◆ wlmtk_menu_remove_item()

void wlmtk_menu_remove_item ( wlmtk_menu_t menu_ptr,
wlmtk_menu_item_t menu_item_ptr 
)

Removes a menu item from the menu.

Parameters
menu_ptr
menu_item_ptr

◆ wlmtk_menu_request_item_highlight()

void wlmtk_menu_request_item_highlight ( wlmtk_menu_t menu_ptr,
wlmtk_menu_item_t menu_item_ptr 
)

Requests that menu_item_ptr be highlighted.

Parameters
menu_ptr
menu_item_ptr

◆ wlmtk_menu_set_mode()

void wlmtk_menu_set_mode ( wlmtk_menu_t menu_ptr,
enum wlmtk_menu_mode  mode 
)

Sets the mode of the menu.

Parameters
menu_ptr
mode

◆ wlmtk_menu_set_open()

void wlmtk_menu_set_open ( wlmtk_menu_t menu_ptr,
bool  opened 
)

Opens the menu: Makes it visible or invisible, and resets state if needed.

Parameters
menu_ptr
opened

Variable Documentation

◆ _test_style

const wlmtk_menu_style_t _test_style
static
Initial value:
= {
.margin = { .width = 2 },
.border = { .width = 2 },
.item = { .height = 10, .bezel_width=1, .width = 100 }
}

For tests: Meu style to apply.

◆ _wlmtk_menu_element_vmt

const wlmtk_element_vmt_t _wlmtk_menu_element_vmt
static
Initial value:
= {
}
static void _wlmtk_menu_element_destroy(wlmtk_element_t *element_ptr)
Definition menu.c:257
static bool _wlmtk_menu_element_pointer_button(wlmtk_element_t *element_ptr, const wlmtk_button_event_t *button_event_ptr)
Definition menu.c:278

The superclass' element virtual method table.

◆ wlmtk_menu_test_cases

const bs_test_case_t wlmtk_menu_test_cases[]
Initial value:
= {
{ 1, "pointer_highlight", test_pointer_highlight },
{ 1, "set_mode", test_set_mode },
{ 0, NULL, NULL }
}
static void test_pointer_highlight(bs_test_t *test_ptr)
Definition menu.c:317
static void test_set_mode(bs_test_t *test_ptr)
Definition menu.c:380

Unit test cases.