X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=minimenu%2Fmmui.h;h=b6a0d684aa13b42c50b5e75ada87c005a3ad2193;hb=60aff81b5f130eaacee046560e23f7bcab580266;hp=8beff3b806df3b8b4adea9981a41fea5f81c8467;hpb=f84c9aadc1cf143e0548b2030d710b7a93a605e2;p=pandora-libraries.git diff --git a/minimenu/mmui.h b/minimenu/mmui.h index 8beff3b..b6a0d68 100644 --- a/minimenu/mmui.h +++ b/minimenu/mmui.h @@ -17,21 +17,37 @@ typedef enum { IMG_DETAIL_BG, IMG_SELECTED_ALPHAMASK, IMG_TAB_SEL, + IMG_TAB_SEL_L, + IMG_TAB_SEL_R, IMG_TAB_UNSEL, + IMG_TAB_UNSEL_L, + IMG_TAB_UNSEL_R, + IMG_TAB_LINE, + IMG_TAB_LINEL, + IMG_TAB_LINER, IMG_ICON_MISSING, IMG_SELECTED_HILITE, IMG_PREVIEW_MISSING, IMG_ARROW_UP, IMG_ARROW_DOWN, IMG_ARROW_SCROLLBAR, + IMG_HOURGLASS, + IMG_FOLDER, + IMG_EXECBIN, + IMG_SUBCATFOLDER, + IMG_DOTDOTFOLDER, IMG_MAX, // before this point is loaded; after is generated + IMG_LIST_ALPHAMASK, + IMG_LIST_ALPHAMASK_W, IMG_TRUEMAX } mm_imgcache_e; typedef struct { mm_imgcache_e id; char *confname; + char *alt_confname; void /*SDL_Surface*/ *i; + void /*SDL_Surface*/ *itiny; } mm_imgcache_t; /* ui stuff @@ -50,47 +66,80 @@ typedef enum { uisb_max } ui_sdl_button_e; +typedef enum { + uiv_icons = 0, + uiv_list, + uiv_max +} ui_viewmode_e; + unsigned char ui_setup ( void ); unsigned char ui_imagecache ( char *basepath ); +unsigned char ui_pick_skin ( void ); // return >0 if skin has changed -#define CHANGED_NOTHING (0) -#define CHANGED_CATEGORY (1<<0) /* changed to different category */ -#define CHANGED_SELECTION (1<<1) /* changed app selection */ -#define CHANGED_DATAUPDATE (1<<2) /* deferred preview pic or icon came in */ -#define CHANGED_APPRELOAD (1<<3) /* new set of applications entirely */ -#define CHANGED_EVERYTHING (0xFFFF) /* redraw it all! */ -void ui_render ( unsigned int render_mask ); +void ui_render ( void ); void ui_loadscreen ( void ); // show screen while loading the menu void ui_discoverscreen ( unsigned char clearscreen ); // screen to show while scanning for apps void ui_cachescreen ( unsigned char clearscreen, char *filename ); // while caching icons, categories and preview-pics-Now-mode +void ui_show_hourglass ( unsigned char updaterect ); +void ui_post_scan ( void ); +unsigned char ui_show_info ( char *pndrun, pnd_disco_t *p ); +void ui_aboutscreen ( char *textpath ); +void ui_revealscreen ( void ); +void ui_manage_categories ( void ); +char *ui_pick_custom_category ( unsigned char mode ); // mode 0 == custom main only; 1 == custom main + FD main; 2 == custom main + FD mains-with-custom-subs + +/* internal functions follow + */ // show a menu, return when selection made; -1 means no selection. Enter is pick. int ui_modal_single_menu ( char *argv[], unsigned int argc, char *title, char *footer ); -/* internal functions follow - */ +// run a forked app (ie: not wait for it to return) +unsigned char ui_forkexec ( char *argv[] ); // argv[0] is proggy to exec; argv last entry must be NULLptr + +// create a thread of this guy, and it'll try to load the preview pic in background and then signal the app +unsigned char ui_threaded_defered_preview ( pnd_disco_t *p ); // callback +unsigned char ui_threaded_defered_icon ( void * ); // callback +unsigned char ui_threaded_timer_create ( void ); +int ui_threaded_timer ( pnd_disco_t *p ); // callback // change the focus -void ui_process_input ( unsigned char block_p ); +void ui_process_input ( pnd_dbusnotify_handle dbh, pnd_notify_handle nh ); void ui_push_left ( unsigned char forcecoil ); void ui_push_right ( unsigned char forcecoil ); void ui_push_up ( void ); void ui_push_down ( void ); void ui_push_exec ( void ); +void ui_push_backup ( void ); void ui_push_ltrigger ( void ); void ui_push_rtrigger ( void ); unsigned char ui_determine_row ( mm_appref_t *a ); unsigned char ui_determine_screen_row ( mm_appref_t *a ); unsigned char ui_determine_screen_col ( mm_appref_t *a ); +// detail panel hide/show +unsigned char ui_is_detail_hideable ( void ); // returns true if detail pane may be hidden with current skin +void ui_toggle_detail_pane ( void ); // toggle it on/off + // ui_render() can register tappable-areas which touchscreen code can then figure out if we made a hit void ui_register_reset ( void ); -void ui_register_tab ( mm_category_t *category, unsigned int x, unsigned int y, unsigned int w, unsigned int h ); -void ui_register_app ( pnd_disco_t *app, unsigned int x, unsigned int y, unsigned int w, unsigned int h ); +void ui_register_tab ( unsigned char catnum, unsigned int x, unsigned int y, unsigned int w, unsigned int h ); +void ui_register_app ( mm_appref_t *app, unsigned int x, unsigned int y, unsigned int w, unsigned int h ); +void ui_touch_act ( unsigned int x, unsigned int y ); // deferred preview timer void ui_set_selected ( mm_appref_t *r ); unsigned int ui_callback_f ( unsigned int t ); +// 'popup' 'context' menu +void ui_menu_context ( mm_appref_t *a ); +unsigned char ui_menu_oneby ( char *title, char *footer, char *one ); // return 0 (nada) or 1 (one) for they actually picked it +unsigned char ui_menu_twoby ( char *title, char *footer, char *one, char *two ); // return 0 (nada), 1 (one), 2 (two) +unsigned char ui_menu_get_text_line ( char *title, char *footer, char *initialvalue, + char *r_buffer, unsigned char maxlen, unsigned char numbersonlyp ); // populates r_buffer + +// ovr-file edit +unsigned char ovr_replace_or_add ( mm_appref_t *a, char *keybase, char *newvalue ); // keybase does not include app# + #endif