void ExitApp() { #ifdef TOPORT ShutoffRumble(); #endif StopVideo(); exit(0); }
void DoRumble(int i) { if(rumbleOn[i]) { now[i] = gettime(); if(diff_usec(prev[i], now[i]) > RUMBLE_MAX) ShutoffRumble(i, RUMBLE_COOLOFF); } }
/**************************************************************************** * UpdateGUI * * Primary thread to allow GUI to respond to state changes, and draws GUI ***************************************************************************/ static void * UpdateGUI(void *arg) { u8 i; while (!ExitRequested) { if (guiHalt) { LWP_SuspendThread(guithread); continue; } UpdatePads(); mainWindow->Draw(); if (Settings.tooltips && Theme::ShowTooltips && mainWindow->GetState() != STATE_DISABLED) mainWindow->DrawTooltip(); // Pointer modifies wpad data struct for easy implementation of "virtual pointer" with PAD-Sticks // That is why it has to be called right before updating other gui elements with the triggers i = 4; while(i--) pointer[i]->Draw(&userInput[i]); for (i = 0; i < 4; i++) mainWindow->Update(&userInput[i]); Menu_Render(); if (bgMusic) bgMusic->UpdateState(); } for (i = 5; i < 255; i += 10) { mainWindow->Draw(); Menu_DrawRectangle(0, 0, screenwidth, screenheight, (GXColor) { 0, 0, 0, i }, 1); Menu_Render(); } mainWindow->RemoveAll(); ShutoffRumble(); return NULL; }
void ExitApp() { ShutoffRumble(); StopGX(); exit(0); }
void DisableRumble() { rumbleDisabled = true; ShutoffRumble(); }
void ShutoffRumble() { ShutoffRumble(0, RUMBLE_COOLOFF*3); }
bool GuiBrowser(GuiWindow *mainWindow, GuiWindow *parentWindow, char *path, const char *label) { char temp[256]; char title[100]; int i; ShutoffRumble(); // populate initial directory listing if(BrowseDevice() <= 0) { WindowPrompt( "Error", "Unable to display files on selected load device", "Ok", NULL); return false; } int menu = MENU_NONE; int dev = 0; char mount[2][5] = {"SD", "USB"}; GuiTrigger trigA; trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A); if(OpenDefaultFolder() <= 0) { BrowseDevice(); bzero(temp, sizeof(temp)); } else sprintf(temp, "%s/", Settings.UserFolder); sprintf(title, "Browse files"); bzero(path, sizeof(path)); GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM); GuiImageData Textbox(textbox_end_png); GuiImage TextboxImg(&Textbox); GuiButton InsertURL(TextboxImg.GetWidth(), TextboxImg.GetHeight()); GuiImageData Device(textbox_begin_png); GuiImage DeviceImg(&Device); GuiButton InsertDEV(DeviceImg.GetWidth(), DeviceImg.GetHeight()); GuiText URL(strchr(temp, '/'), 20, (GXColor){0, 0, 0, 255}); GuiText DEV("SD", 20, (GXColor){0, 0, 0, 255}); URL.SetMaxWidth(TextboxImg.GetWidth()-20); URL.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); URL.SetPosition(5,0); URL.SetScroll(SCROLL_HORIZONTAL); InsertURL.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); InsertURL.SetPosition(InsertDEV.GetWidth()/2,30); InsertURL.SetLabel(&URL); InsertURL.SetImage(&TextboxImg); InsertURL.SetSoundOver(&btnSoundOver); InsertURL.SetTrigger(&trigA); InsertDEV.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); InsertDEV.SetPosition(InsertURL.GetLeft()-InsertDEV.GetWidth()/2,30); InsertDEV.SetLabel(&DEV); InsertDEV.SetImage(&DeviceImg); InsertDEV.SetSoundOver(&btnSoundOver); InsertDEV.SetTrigger(&trigA); InsertDEV.SetEffectGrow(); GuiText titleTxt(title, 28, (GXColor){0, 0, 0, 255}); titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); titleTxt.SetPosition(50,50); GuiFileBrowser fileBrowser(552, 248); fileBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); fileBrowser.SetPosition(0, 108); fileBrowser.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 30); GuiImageData btnOutline(button_png); GuiImageData btnOutlineOver(button_over_png); GuiText okBtnTxt(label, 24, (GXColor){0, 0, 0, 255}); GuiImage okBtnImg(&btnOutline); GuiImage okBtnImgOver(&btnOutlineOver); GuiButton okBtn(btnOutline.GetWidth(), btnOutline.GetHeight()); okBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM); okBtn.SetPosition(50, -35); okBtn.SetLabel(&okBtnTxt); okBtn.SetImage(&okBtnImg); okBtn.SetImageOver(&okBtnImgOver); okBtn.SetTrigger(&trigA); okBtn.SetEffectGrow(); GuiText cancelBtnTxt("Cancel", 24, (GXColor){0, 0, 0, 255}); GuiImage cancelBtnImg(&btnOutline); GuiImage cancelBtnImgOver(&btnOutlineOver); GuiButton cancelBtn(btnOutline.GetWidth(), btnOutline.GetHeight()); cancelBtn.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM); cancelBtn.SetPosition(-50, -35); cancelBtn.SetLabel(&cancelBtnTxt); cancelBtn.SetImage(&cancelBtnImg); cancelBtn.SetImageOver(&cancelBtnImgOver); cancelBtn.SetTrigger(&trigA); cancelBtn.SetEffectGrow(); GuiWindow buttonWindow(screenwidth, screenheight); buttonWindow.Append(&okBtn); buttonWindow.Append(&cancelBtn); buttonWindow.Append(&InsertURL); buttonWindow.Append(&InsertDEV); buttonWindow.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 30); if (mainWindow) { mainWindow->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50); while(mainWindow->GetEffect() > 0) usleep(100); } HaltGui(); if (mainWindow) parentWindow->Remove(mainWindow); parentWindow->Append(&buttonWindow); parentWindow->Append(&fileBrowser); ResumeGui(); while(menu == MENU_NONE) { usleep(100); if(!strlen(URL.GetText()) || URL.GetText()[0] != '/') { sprintf(temp, "%s", rootdir); URL.SetText(strchr(temp, '/')); } if(InsertURL.GetState() == STATE_CLICKED) { URL.SetScroll(SCROLL_NONE); OnScreenKeyboard(parentWindow, strchr(temp, '/'), 256); URL.SetText(strchr(temp, '/')); URL.SetScroll(SCROLL_HORIZONTAL); InsertURL.ResetState(); } if(InsertDEV.GetState() == STATE_CLICKED) { InsertDEV.ResetState(); dev ^= 1; if(BrowseDevice(dev) <= 0) { BrowseDevice(); dev = 0; } DEV.SetText(mount[dev]); URL.SetText(""); } // update file browser based on arrow buttons // set MENU_EXIT if A button pressed on a file for(i=0; i < FILE_PAGESIZE; i++) { if(fileBrowser.fileList[i]->GetState() == STATE_CLICKED) { fileBrowser.fileList[i]->ResetState(); // check corresponding browser entry if(browserList[browser.selIndex].isdir) { if(BrowserChangeFolder()) { fileBrowser.ResetState(); fileBrowser.fileList[0]->SetState(STATE_SELECTED); fileBrowser.TriggerUpdate(); if(strlen(browser.dir) > 1) sprintf(fullpath, "%s%s/", rootdir, browser.dir+1); // print current path else sprintf(fullpath, "%s", rootdir); // print current path sprintf(temp, fullpath); URL.SetText(strchr(temp, '/')); } else { menu = MENU_HOME; break; } } else { ShutoffRumble(); // load file if(strlen(browser.dir) > 1) sprintf(fullpath, "%s%s/%s", rootdir, browser.dir+1, browserList[browser.selIndex].filename); // print current path else sprintf(fullpath, "%s%s", rootdir, browserList[browser.selIndex].filename); // print current path sprintf(temp, fullpath); URL.SetText(strchr(temp, '/')); } } } if(okBtn.GetState() == STATE_CLICKED) { sprintf(path, temp); menu = MENU_HOME; } if(cancelBtn.GetState() == STATE_CLICKED) menu = MENU_HOME; } fileBrowser.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50); buttonWindow.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_OUT, 50); while(buttonWindow.GetEffect() > 0) usleep(100); fileBrowser.SetVisible(false); buttonWindow.SetVisible(false); if(mainWindow) { mainWindow->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 30); parentWindow->Append(mainWindow); while(mainWindow->GetEffect() > 0) usleep(100); } HaltGui(); parentWindow->Remove(&buttonWindow); parentWindow->Remove(&fileBrowser); ResumeGui(); if (isValidPath(path)) return true; return false; }
/**************************************************************************** * MenuBrowseDevice ***************************************************************************/ static int MenuBrowseDevice() { char title[100]; int i; ShutoffRumble(); // populate initial directory listing if (BrowseDevice() <= 0) { int choice = WindowPrompt( "Error", "Unable to display files on selected load device.", "Retry", "Check Settings"); if (choice) return MENU_BROWSE_DEVICE; else return MENU_SETTINGS; } int menu = MENU_NONE; sprintf(title, "Browse Files"); GuiText titleTxt(title, 28, ColorGrey); titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); titleTxt.SetPosition(100, 50); GuiTrigger trigA; // trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A); trigA.SetSimpleTrigger(-1, 0, PAD_BUTTON_A); GuiFileBrowser fileBrowser(1080, 496); fileBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); fileBrowser.SetPosition(0, 100); GuiImageData btnOutline(xenon_button_png); GuiImageData btnOutlineOver(xenon_button_over_png); GuiText backBtnTxt("Go Back", 24, ColorGrey2); GuiImage backBtnImg(&btnOutline); GuiImage backBtnImgOver(&btnOutlineOver); GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight()); backBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM); backBtn.SetPosition(30, -35); backBtn.SetLabel(&backBtnTxt); backBtn.SetImage(&backBtnImg); backBtn.SetImageOver(&backBtnImgOver); backBtn.SetTrigger(&trigA); backBtn.SetEffectGrow(); GuiWindow xenon_buttonWindow(screenwidth, screenheight); xenon_buttonWindow.Append(&backBtn); HaltGui(); mainWindow->Append(&titleTxt); mainWindow->Append(&fileBrowser); mainWindow->Append(&xenon_buttonWindow); ResumeGui(); while (menu == MENU_NONE) { UGUI(); usleep(THREAD_SLEEP); // update file browser based on arrow xenon_buttons // set MENU_EXIT if A xenon_button pressed on a file for (i = 0; i < FILE_PAGESIZE; i++) { if (fileBrowser.fileList[i]->GetState() == STATE_CLICKED) { fileBrowser.fileList[i]->ResetState(); // check corresponding browser entry if (browserList[browser.selIndex].isdir) { if (BrowserChangeFolder()) { fileBrowser.ResetState(); fileBrowser.fileList[0]->SetState(STATE_SELECTED); fileBrowser.TriggerUpdate(); } else { menu = MENU_BROWSE_DEVICE; break; } } else { ShutoffRumble(); mainWindow->SetState(STATE_DISABLED); // load file printf("Launch : %s\r\n",browserList[browser.selIndex].filename); mainWindow->SetState(STATE_DEFAULT); } } } if (backBtn.GetState() == STATE_CLICKED) menu = MENU_SETTINGS; } HaltGui(); mainWindow->Remove(&titleTxt); mainWindow->Remove(&xenon_buttonWindow); mainWindow->Remove(&fileBrowser); return menu; }
void MPlayerInput() { bool ir = false; bool inDVDMenu = wiiInDVDMenu(); static bool volumeUpdated = false; if(userInput[0].wpad->ir.valid) ir = true; if(userInput[0].wpad->btns_d & WPAD_BUTTON_1) osdLevel ^= 1; else if(ExitRequested || userInput[0].wpad->btns_d & WPAD_BUTTON_HOME) wiiGotoGui(); if(!inDVDMenu) { if(userInput[0].wpad->btns_d & WPAD_BUTTON_A) { // Hack to allow people to unpause while the OSD GUI is visible by // pointing above the button bar and pressing A. We also need to be outside // the boundaries of the volume bar area, when it is visible int x = userInput[0].wpad->ir.x; int y = userInput[0].wpad->ir.y; int xoffset = 20; if(screenwidth == 768) xoffset = 80; if(!drawGui || (y < 360 && (!VideoVolumeLevelBarVisible() || !(x > xoffset && x < xoffset+100 && y > 180)))) { wiiPause(); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_PLUS) { volnow = gettime(); if(diff_usec(volprev, volnow) > VOL_DELAY) { volprev = volnow; WiiSettings.volume++; if(WiiSettings.volume > 100) WiiSettings.volume = 100; wiiSetVolume(WiiSettings.volume); volumeUpdated = true; ShowVideoVolumeLevelBar(); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_MINUS) { volnow = gettime(); if(diff_usec(volprev, volnow) > VOL_DELAY) { volprev = volnow; WiiSettings.volume--; if(WiiSettings.volume < 0) WiiSettings.volume = 0; wiiSetVolume(WiiSettings.volume); volumeUpdated = true; ShowVideoVolumeLevelBar(); } } else if (userInput[0].wpad->btns_h & WPAD_BUTTON_B) { unsigned int delay = (resizeinitial == 1) ? RESIZE_INITIAL_DELAY : RESIZE_DELAY; int resizenow = gettime(); if(userInput[0].wpad->btns_h & WPAD_BUTTON_RIGHT) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(+0.003F, 0.00F); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_LEFT) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(-0.003F, 0.00F); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_UP) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(0.00F, +0.003F); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_DOWN) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(0.00F, -0.003F); } } if(userInput[0].wpad->btns_d & (WPAD_BUTTON_RIGHT | WPAD_BUTTON_LEFT | WPAD_BUTTON_UP | WPAD_BUTTON_DOWN)) { resizeinitial = 0; } } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_RIGHT) { wiiFastForward(); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_LEFT) { wiiRewind(); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_UP) { if(!wiiIsPaused()) wiiSetProperty(MP_CMD_SUB_SELECT, 0); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_DOWN) { if(!wiiIsPaused()) wiiSetProperty(MP_CMD_SWITCH_AUDIO, 0); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_2) { wiiDVDNav(MP_CMD_DVDNAV_MENU); } } else { if(userInput[0].wpad->ir.valid) wiiUpdatePointer((int)userInput[0].wpad->ir.x, (int)userInput[0].wpad->ir.y); if(userInput[0].wpad->btns_d & WPAD_BUTTON_A) { if(userInput[0].wpad->ir.valid) wiiDVDNav(MP_CMD_DVDNAV_MOUSECLICK); else wiiDVDNav(MP_CMD_DVDNAV_SELECT); } else if (userInput[0].wpad->btns_h & WPAD_BUTTON_B) { unsigned int delay = (resizeinitial == 1) ? RESIZE_INITIAL_DELAY : RESIZE_DELAY; int resizenow = gettime(); if(userInput[0].wpad->btns_h & WPAD_BUTTON_RIGHT) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(+0.003F, 0.00F); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_LEFT) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(-0.003F, 0.00F); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_UP) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(0.00F, +0.003F); } } else if(userInput[0].wpad->btns_h & WPAD_BUTTON_DOWN) { if(diff_usec(resizeprev, resizenow) > delay) { resizeinitial++; resizeprev = resizenow; MPlayerResize(0.00F, -0.003F); } } if(userInput[0].wpad->btns_d & (WPAD_BUTTON_RIGHT | WPAD_BUTTON_LEFT | WPAD_BUTTON_UP | WPAD_BUTTON_DOWN)) { resizeinitial = 0; } } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_UP) { wiiDVDNav(MP_CMD_DVDNAV_UP); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_DOWN) { wiiDVDNav(MP_CMD_DVDNAV_DOWN); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_RIGHT) { wiiDVDNav(MP_CMD_DVDNAV_RIGHT); } else if(userInput[0].wpad->btns_d & WPAD_BUTTON_LEFT) { wiiDVDNav(MP_CMD_DVDNAV_LEFT); } } if(volumeUpdated) { volnow = gettime(); if(volnow > volprev && diff_usec(volprev, volnow) > VOLDISP_MAX) volumeUpdated = false; else ir = true; // trigger display } if(ir || BufferingStatusSet() || osdLevel) { drawGui = true; } else if(drawGui) { drawGui = false; HideVideoVolumeLevelBar(); ShutoffRumble(); } }