-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathmenu.h
More file actions
67 lines (54 loc) · 1.45 KB
/
menu.h
File metadata and controls
67 lines (54 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#pragma once
/* menu.h
*
* Generic menu component.
*
* RebbleOS
*
* Author: Barry Carter <barry.carter@gmail.com>.
*/
#include <stdint.h>
#include "menu_layer.h"
struct Menu;
struct MenuItem;
struct MenuItems;
typedef struct MenuItems* (*MenuItemCallback)(const struct MenuItem *item);
typedef struct MenuItem
{
char *text;
char *sub_text;
uint16_t image_res_id;
MenuItemCallback on_select;
void *context;
} MenuItem;
#define MenuItem(text, sub_text, image, on_select) ((MenuItem) { text, sub_text, image, on_select })
typedef struct MenuItems
{
uint16_t count;
uint16_t capacity;
MenuItem *items;
struct MenuItems *back;
MenuIndex back_index;
} MenuItems;
MenuItems* menu_items_create(uint16_t capacity);
void menu_items_destroy(MenuItems *items);
void menu_items_add(MenuItems *items, MenuItem item);
// called when back is pressed while in top menu
typedef void (*MenuExitCallback)(struct Menu *menu, void *context);
typedef struct MenuCallbacks
{
MenuExitCallback on_menu_exit;
} MenuCallbacks;
typedef struct Menu
{
MenuItems *items;
MenuLayer *layer;
MenuCallbacks callbacks;
void *context;
} Menu;
Menu* menu_create(GRect frame);
void menu_destroy(Menu *menu);
void menu_set_items(Menu *menu, MenuItems *items);
Layer* menu_get_layer(Menu *menu);
void menu_set_callbacks(Menu *menu, void *context, MenuCallbacks callbacks);
void menu_set_click_config_onto_window(Menu *menu, struct Window *window);