1e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifndef _PERF_UI_BROWSER_H_
2e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define _PERF_UI_BROWSER_H_ 1
3e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
4e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include <stdbool.h>
5e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include <newt.h>
6e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include <sys/types.h>
7e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "../types.h"
8e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
9e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define HE_COLORSET_TOP		50
10e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define HE_COLORSET_MEDIUM	51
11e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define HE_COLORSET_NORMAL	52
12e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define HE_COLORSET_SELECTED	53
13e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#define HE_COLORSET_CODE	54
14e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
15e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstruct ui_browser {
16e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	newtComponent form, sb;
17e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	u64	      index, top_idx;
18e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	void	      *top, *entries;
19e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	u16	      y, x, width, height;
20e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	void	      *priv;
21e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	unsigned int  (*refresh)(struct ui_browser *self);
22e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	void	      (*write)(struct ui_browser *self, void *entry, int row);
23e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	void	      (*seek)(struct ui_browser *self, off_t offset, int whence);
24e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	u32	      nr_entries;
25e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng};
26e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
27e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__set_color(struct ui_browser *self, int color);
28e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__set_percent_color(struct ui_browser *self,
29e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng				   double percent, bool current);
30e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbool ui_browser__is_current_entry(struct ui_browser *self, unsigned row);
31e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__refresh_dimensions(struct ui_browser *self);
32e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__reset_index(struct ui_browser *self);
33e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
34e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__gotorc(struct ui_browser *self, int y, int x);
35e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__add_exit_key(struct ui_browser *self, int key);
36e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__add_exit_keys(struct ui_browser *self, int keys[]);
37e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid __ui_browser__show_title(struct ui_browser *browser, const char *title);
38e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__show_title(struct ui_browser *browser, const char *title);
39e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint ui_browser__show(struct ui_browser *self, const char *title,
40e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng		     const char *helpline, ...);
41e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__hide(struct ui_browser *self);
42e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint ui_browser__refresh(struct ui_browser *self);
43e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengint ui_browser__run(struct ui_browser *self);
44e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
45e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__rb_tree_seek(struct ui_browser *self, off_t offset, int whence);
46e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengunsigned int ui_browser__rb_tree_refresh(struct ui_browser *self);
47e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
48e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__list_head_seek(struct ui_browser *self, off_t offset, int whence);
49e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengunsigned int ui_browser__list_head_refresh(struct ui_browser *self);
50e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
51e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengvoid ui_browser__init(void);
52e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif /* _PERF_UI_BROWSER_H_ */
53