void RefreshPanel( void ) { unsigned int i; GUI_Ctrl_ThumbnailPanel_Clean( GUI_ControlByID(ID_THUMBNAIL_PANEL) ); for( i = 0; i < nNumFiles; i++ ) GUI_Ctrl_ThumbnailPanel_AddItem( GUI_ControlByID(ID_THUMBNAIL_PANEL), &fileInfo[i] ); GUI_Render(); }
unsigned int GUI_CB_DlgThumb( GUIMenu_t *lpGUIMenu, unsigned int nGUIMsg, unsigned int nCtrlParam, unsigned int nOther ) { char szStr[32]; unsigned int i, nSize = 0, nTotalSize = 0; switch( nGUIMsg ) { case GUI_MSG_OPEN: for( i = 0; i < nNumFiles; i++ ) nTotalSize += fileInfo[i].size; GUI_Ctrl_Progress_SetBounds( GUI_ControlByID(ID_PROGRESS), 0, nTotalSize ); GUI_Ctrl_Progress_SetPos( GUI_ControlByID(ID_PROGRESS), 0 ); GUI_Ctrl_Label_SetText( GUI_ControlByID(ID_PERCENT), "0 %" ); for( i = 0; i < nNumFiles; i++ ) { CreateThumbnail( &fileInfo[i], szCurDir, NULL ); nSize = GUI_Ctrl_Progress_GetPos( GUI_ControlByID(ID_PROGRESS) ); nSize += fileInfo[i].size; snprintf( szStr, sizeof(szStr), "%i %%", (int) ((double) nSize / nTotalSize * 100.0) ); GUI_Ctrl_Progress_SetPos( GUI_ControlByID(ID_PROGRESS), nSize ); GUI_Ctrl_Label_SetText( GUI_ControlByID(ID_PERCENT), szStr ); GUI_Render(); } break; case GUI_MSG_CONTROL: switch( LOWORD(nCtrlParam) ) { case ID_OK_BUTTON: GUI_CloseDialog( lpGUIMenu, 0, 0 ); break; } break; } return 0; }
void SetBrowseDir( const char *pDirPath ) { int nCount, i; strncpy( szCurDir, pDirPath, MAX_PATH ); szCurDir[MAX_PATH] = 0; fileInfo[0].flags = FLAG_DIRECTORY; fileInfo[0].size = 0; strcpy( fileInfo[0].name, ".." ); nCount = DirGetContents( szCurDir, "jpg", &fileInfo[1], MAX_DIR_FILES - 1); nNumFiles = nCount + 1; GUI_Ctrl_ThumbnailPanel_Clean( GUI_ControlByID(ID_THUMBNAIL_PANEL) ); for( i = 0; i < nNumFiles; i++ ) GUI_Ctrl_ThumbnailPanel_AddItem( GUI_ControlByID(ID_THUMBNAIL_PANEL), &fileInfo[i] ); GUI_Render(); }
unsigned int GUI_CB_MyPictures( GUIMenu_t *lpGUIMenu, unsigned int nGUIMsg, unsigned int nCtrlParam, unsigned int nOther ) { GUIThumbItem_t *pItem; const fileInfo_t *pFile; unsigned int nRet, nOffset; char szNewPath[MAX_PATH + 1], *pStr; switch( nGUIMsg ) { case GUI_MSG_OPEN: pErrImage = GUI_MenuGetImage( lpGUIMenu, ((GUICtrl_Image_t*)GUI_ControlByID(ID_IMAGE_ERROR)->pCtrl)->nTexture ); pDirImage = GUI_MenuGetImage( lpGUIMenu, ((GUICtrl_Image_t*)GUI_ControlByID(ID_IMAGE_DIR)->pCtrl)->nTexture ); if( !szCurDir[0] ) MyPictures_Init(); break; case GUI_MSG_CLOSE: GUI_Ctrl_ThumbnailPanel_VramClean( GUI_ControlByID(ID_THUMBNAIL_PANEL) ); break; case GUI_MSG_CONTROL: switch( LOWORD(nCtrlParam) ) { case ID_CACHE_IMAGES: GUI_OpenDialog( GUI_MENU_DLGTHUMB, lpGUIMenu, 0 ); break; case ID_SORT_BY_NAME: if( nNumFiles ) { qsort( fileInfo, nNumFiles, sizeof(fileInfo_t), SortPanelByName ); RefreshPanel(); } break; case ID_SORT_BY_SIZE: if( nNumFiles ) { qsort( fileInfo, nNumFiles, sizeof(fileInfo_t), SortPanelBySize ); RefreshPanel(); } break; case ID_SORT_BY_TYPE: break; case ID_GO_BACK: GUI_OpenMenu( GUI_MENU_MAIN ); break; case ID_THUMBNAIL_PANEL: switch( HIWORD(nCtrlParam) ) { case GUI_NOT_NEED_INFO: pItem = (GUIThumbItem_t*) nOther; pFile = (fileInfo_t*) pItem->pUser; pItem->pStr = pFile->name; // device list if( !szCurDir[0] ) { if( !strncmp( pFile->name, "pfs", 3 ) ) { pItem->pStr = HDD_GetPartition(pFile->name); } else if( !strncmp( pFile->name, "smb", 3 ) ) { pItem->pStr = SMB_GetShareNameByPath(pFile->name); } } nRet = CreateThumbnail( pFile, szCurDir, &pItem->pTexture ); if( nRet == 0 ) pItem->pTexture = pErrImage->gsTexture; break; case GUI_NOT_REMOVE: pItem = (GUIThumbItem_t*) nOther; if( pItem->pTexture ) { if( pItem->pTexture && pItem->pTexture != pErrImage->gsTexture && pItem->pTexture != pDirImage->gsTexture ) gsLib_texture_free( pItem->pTexture ); } pItem->pTexture = NULL; pItem->pStr = NULL; break; case GUI_NOT_THUMB: pFile = (fileInfo_t*) ((GUIThumbItem_t*)nOther)->pUser; pItem = (GUIThumbItem_t*) nOther; if( pFile->flags & FLAG_DIRECTORY ) { if( !strcmp( pFile->name, ".." ) ) { if( BrowsingRoot(szCurDir) ) { MyPictures_Init(); GUI_Render(); return 0; } else { nOffset = strlen(szCurDir) - 1; strncpy( szNewPath, szCurDir, nOffset ); szNewPath[ nOffset ] = 0; if( !(pStr = strrchr( szNewPath, '/' )) ) break; nOffset = pStr - szNewPath + 1; strncpy( szNewPath, szCurDir, nOffset ); szNewPath[ nOffset ] = 0; } } else { snprintf( szNewPath, MAX_PATH, "%s%s", szCurDir, pFile->name ); if( szNewPath[ strlen(szNewPath) - 1 ] != '/' ) strncat( szNewPath, "/", MAX_PATH ); } SetBrowseDir( szNewPath ); } else { // clicked an image thumbnail if( pItem->pTexture != pErrImage->gsTexture && pItem->pTexture != pDirImage->gsTexture ) { snprintf( szNewPath, sizeof(szNewPath), "%s%s", szCurDir, pFile->name ); GUI_OpenViewMenu( szNewPath ); } } break; } break; } break; } return 0; }
int GUI_Ctrl_List_Input( GUIControl_t *pCtrl, unsigned int nPadBtns ) { GUICtrl_List_t *pList = pCtrl->pCtrl; if( !pList->nNumItems ) return 0; if( nPadBtns & PAD_DOWN ) { if( pList->nSelectedItem < (pList->nNumItems - 1) ) { GUI_Ctrl_List_SetCursor( pCtrl, pList->nSelectedItem + 1 ); GUI_Render(); return 1; } } else if( nPadBtns & PAD_UP ) { if( pList->nSelectedItem > 0 ) { GUI_Ctrl_List_SetCursor( pCtrl, pList->nSelectedItem - 1 ); GUI_Render(); return 1; } } else if( nPadBtns & PAD_L1 ) { GUI_Ctrl_List_SetCursor( pCtrl, 0 ); GUI_Render(); return 1; } else if( nPadBtns & PAD_R1 ) { GUI_Ctrl_List_SetCursor( pCtrl, pList->nNumItems - 1 ); GUI_Render(); return 1; } else if( nPadBtns & PAD_CROSS ) { pCtrl->pParent->pfnCallback( pCtrl->pParent, GUI_MSG_CONTROL, MAKEPARAM( pCtrl->nID, GUI_NOT_LIST_CLICK ), pList->nSelectedItem ); } else if( nPadBtns & PAD_SQUARE ) { if( pList->pItems[ pList->nSelectedItem ].nFlags & FLAG_MARKED ) { pList->pItems[ pList->nSelectedItem ].nFlags &= ~FLAG_MARKED; pCtrl->pParent->pfnCallback( pCtrl->pParent, GUI_MSG_CONTROL, MAKEPARAM( pCtrl->nID, GUI_NOT_LIST_UNMARK ), 0 ); } else { pList->pItems[ pList->nSelectedItem ].nFlags |= FLAG_MARKED; pCtrl->pParent->pfnCallback( pCtrl->pParent, GUI_MSG_CONTROL, MAKEPARAM( pCtrl->nID, GUI_NOT_LIST_MARK ), 0 ); } return 1; } return 0; }