void PAGE_ShowSafetyDialog() { if (dialog) { u64 unsafe = safety_check(); if (! unsafe) { DialogClose(dialog, 0); safety_confirmed(); } else { safety_string_cb(NULL, NULL); u32 crc = Crc(tempstring, strlen(tempstring)); if (crc != dialogcrc) { GUI_Redraw(dialog); dialogcrc = crc; } } } else { tempstring[0] = 0; dialogcrc = 0; dialog = GUI_CreateDialog(&gui->dialog, DIALOG1_X, DIALOG1_Y, DIALOG1_WIDTH, DIALOG1_HEIGHT, NULL, safety_string_cb, safety_ok_cb, dtOk, NULL); } }
void dlgbut_presscancel_cb(struct guiObject *obj, const void *data) { (void)obj; struct guiObject *dlgObj = (struct guiObject *)data; DialogClose(dlgObj, 0); }
void PAGE_CloseBindingDialog() { if (dialog) { DialogClose(dialog, 0); } }
unsigned handle_buttons(u32 button, unsigned flags, void *data) { (void)data; //When modal, we capture all button presses int modalActive = GUI_IsModal() ? 1 : 0; if(USE_4BUTTON_MODE) { // IN 4 button mode, up/down can also act as left/right for TextSelect if (objACTIVE) { if (CHAN_ButtonIsPressed(button, BUT_UP)) { button = CHAN_ButtonMask(BUT_LEFT); } else if (CHAN_ButtonIsPressed(button, BUT_DOWN)) { button = CHAN_ButtonMask(BUT_RIGHT); } else if (CHAN_ButtonIsPressed(button, BUT_ENTER)) { if (flags & BUTTON_RELEASE) objACTIVE = NULL; } else if (CHAN_ButtonIsPressed(button, BUT_EXIT)) { if (flags & BUTTON_RELEASE) objACTIVE = NULL; return 1; } } else { if (objSELECTED && CHAN_ButtonIsPressed(button, BUT_ENTER) && objSELECTED->Type == TextSelect) { if (flags & BUTTON_RELEASE) { objACTIVE = objSELECTED; } return 1; } } } //printf("Button: %08x Flags: %08x Active: %08x\n", button, flags, objACTIVE); if (CHAN_ButtonIsPressed(button, BUT_LEFT) || CHAN_ButtonIsPressed(button, BUT_RIGHT) || CHAN_ButtonIsPressed(button, BUT_ENTER)) { // Widgets can only handle Left, Right and Enter if (objSELECTED) return GUI_ObjButton(objSELECTED, button, flags) || modalActive; return modalActive; } if (flags & (BUTTON_LONGPRESS | BUTTON_RELEASE)) { if ((flags & BUTTON_HAD_LONGPRESS) & (flags & BUTTON_RELEASE)) { //ignore long-press release return modalActive; } else if (CHAN_ButtonIsPressed(button, BUT_DOWN) || CHAN_ButtonIsPressed(button, BUT_UP)) { struct guiObject *obj = (CHAN_ButtonIsPressed(button, BUT_DOWN) || ! objSELECTED) ? GUI_GetNextSelectable(objSELECTED) : GUI_GetPrevSelectable(objSELECTED); if (obj && obj != objSELECTED) { GUI_SetSelected(obj); } } else if (! (flags & BUTTON_LONGPRESS) && objSELECTED && CHAN_ButtonIsPressed(button, BUT_EXIT)) { if (objDIALOG) { //Why doesn't the dialog handle its own buttons? DialogClose(objDIALOG, 0); } else { OBJ_SET_DIRTY(objSELECTED, 1); objSELECTED = NULL; if (select_notify) select_notify(objSELECTED); } } } else if (! objSELECTED && CHAN_ButtonIsPressed(button, BUT_EXIT)) { // We need to tell the button handler that we will handle this press // But we ignore an EXIT if there is nothing selected return modalActive; } return 1; }