// Otwiera plik, ustala dla jego format oraz kodek, jaki bêdzie u¿yty // Zwraca -1 jesli blad static int openAudioFile(const char *cfilename) { GOC_BDEBUG("-> openAudioFile: %s", cfilename); // wstepne inicjowanie i sprzatanie closeAudioFile(); // czy wskazano jaki¶ plik if ( cfilename == NULL ) return -1; // czy plik istnieje if ( ! goc_isFileExists( cfilename ) ) return -1; if ( goc_isFolder( cfilename ) ) return -1; // ustawienie nowego pliku odtwarzanego filename = cfilename; // otworz plik GOC_CHEOP(decoderOpen( filename, N_SAMPLES * N_CHANNELS ) == DECODER_CODE_OK, filename = NULL; return -1); GOC_BDEBUG("<- openAudioFile: %s", cfilename); eventChangeSongPlaying(); if ( playerOpenOutput() == PLAYER_CODE_OK ) { return 0; } else { return -1; } }
// listuj katalog i dodawaj pliki w nim zawarte, ktróre s± mp3 static void listAddFolder(const char *fullname) { DIR *dir = opendir( fullname ); struct dirent *ent; if ( dir == NULL ) return; while ( (ent = readdir( dir )) != NULL ) { char *buf = NULL; if ( goc_stringEquals( ent->d_name, ".." ) ) continue; if ( goc_stringEquals( ent->d_name, "." ) ) continue; buf = goc_stringCopy( buf, fullname ); if ( fullname[strlen(fullname)-1] != '/' ) buf = goc_stringAdd( buf, "/" ); buf = goc_stringAdd( buf, ent->d_name ); if ( goc_isFolder( buf ) ) listAddFolder( buf ); else checkAddFile( buf ); buf = goc_stringFree( buf ); } closedir( dir ); }
static int hotKeySelectFolder( GOC_HANDLER uchwyt, GOC_MSG wiesc, void *pBuf, unsigned int nBuf) { char *element = goc_stringCopy(NULL, goc_filelistGetFolder(uchwyt)); element = goc_stringAdd(element, "/"); element = goc_stringAdd(element, goc_listGetUnderCursor(uchwyt)); if ( goc_isFileExists( element ) ) { if ( goc_isFolder( element ) ) { listAddFolder( element ); } else { // a wiec to plik checkAddFile( element ); } char *tmp = goc_stringAdd(goc_stringCopy(NULL, "Dodano: "), element); goc_labelSetText(nStatus, tmp, 0); tmp = goc_stringFree(tmp); goc_systemSendMsg(nStatus, GOC_MSG_PAINT, 0, 0); } }