bool GTKMusicBrowser::AskToDelete(string &url) { bool retvalue = false; uint32 length = url.size() + 1; char *filename = new char[length]; if (IsntError(URLToFilePath(url.c_str(), filename, &length))) { GTKMessageDialog oBox; string oMessage = string("Are you sure you want to delete ") + string(filename) + string("?"); if (oBox.Show(oMessage.c_str(), "Delete Confirmation", kMessageYesNo, true, false, "Delete it Permantly From the Disk") == kMessageReturnYes) { if (oBox.GetCheckStatus()) unlink(filename); retvalue = true; } } delete [] filename; return retvalue; }
Error ThemeManager::AddTheme(string &oThemeFile, bool bRename) { string oThemeDest; bool bRenameFailed = false; char fcopy[_MAX_PATH], *filename = NULL, *ext = NULL; oThemeDest = FreeampDir(NULL) + string("/themes"); if (bRename) { ThemeZip oZip; string oName; if (IsntError(oZip.GetDescriptiveName(oThemeFile, oName)) && oName.length() > 0) { int i; for (i = oName.length() - 1; i >= 0; i--) if (!isalnum(oName[i]) && oName[i] != ' ') oName.erase(i, 1); oThemeDest += string("/") + oName + string(".fat"); } else bRenameFailed = true; } if (!bRename || bRenameFailed) { strcpy(fcopy, oThemeFile.c_str()); filename = strrchr(fcopy, '/'); if (filename) filename = filename + 1; else filename = fcopy; ext = strrchr(filename, '.'); if (ext) { *ext = '\0'; ext++; } if (!filename) filename = "unknown"; oThemeDest += string("/") + string(filename); if (ext) oThemeDest += string(".") + string(ext); } if (!CopyFile(oThemeFile.c_str(), oThemeDest.c_str(), false)) return kError_FileNotFound; // So the caller knows where the theme ended up oThemeFile = oThemeDest; return kError_NoErr; }
static void add_tool(GtkWidget *widget, GTKMusicBrowser *p) { p->SetClickState(kContextPlaylist); FileSelector *filesel = new FileSelector(p->GetContext(),"Add a Track"); filesel->SetExtended(); if (filesel->Run()) { char *returnpath = filesel->GetReturnPath(); char *ext = p->GetContext()->player->GetExtension(returnpath); uint32 length = strlen(returnpath) + 10; char *tempurl = new char[length]; if (IsntError(FilePathToURL(returnpath, tempurl, &length))) { if (ext && p->GetContext()->plm->IsSupportedPlaylistFormat(ext)) { string tobeloaded = tempurl; p->LoadPlaylist(tobeloaded); } else { char *filereturn = strdup_new(filesel->GetReturnPath()); if (filereturn) { char *temp; char *first= strtok(filereturn, "\n"); while ((temp = strtok(NULL, "\n"))) { if (ext) delete [] ext; ext = p->GetContext()->player->GetExtension(temp); if (ext && p->GetContext()->player->IsSupportedExtension(ext)) { p->AddTrackPlaylistEvent(temp); p->m_lastindex++; } } if (ext) delete [] ext; ext = p->GetContext()->player->GetExtension(first); if (ext && p->GetContext()->player->IsSupportedExtension(ext)) p->AddTrackPlaylistEvent(first); } delete [] filereturn; } } delete [] tempurl; delete [] ext; } delete filesel; }
static void import_tool(GtkWidget *w, GTKMusicBrowser *p) { FileSelector *filesel = new FileSelector(p->GetContext(),"Import a Track or Playlist into My Music"); if (filesel->Run()) { FAContext *m_context = p->GetContext(); char *returnpath = filesel->GetReturnPath(); char *filereturn = strdup_new(returnpath); if (filereturn) { char *first = strtok(filereturn, "\n"); while (first) { char *ext = m_context->player->GetExtension(first); uint32 length = strlen(first) + 10; char *tempurl = new char[length]; if (IsntError(FilePathToURL(first, tempurl, &length))) { if (ext && m_context->plm->IsSupportedPlaylistFormat(ext)) p->ImportPlaylist(tempurl); else if (ext && m_context->player->IsSupportedExtension(ext)) { PlaylistItem *plist = new PlaylistItem(tempurl); m_context->plm->RetrieveMetaDataNow(plist); m_context->catalog->WriteMetaDataToDatabase(tempurl, plist->GetMetaData()); m_context->catalog->AddSong(tempurl); delete plist; } } delete [] tempurl; delete ext; first = strtok(NULL, "\n"); } delete [] filereturn; } } delete filesel; }
static LRESULT WINAPI HiddenWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { LRESULT result = 0; FAContext* context = (FAContext*)GetWindowLong(hwnd, GWL_USERDATA); static bool replaceCurrentQueue = true; switch (msg) { case WM_CREATE: { context = (FAContext*)((LPCREATESTRUCT)lParam)->lpCreateParams; assert(context != NULL); result = SetWindowLong(hwnd, GWL_USERDATA, (LONG)context); break; } case WM_TIMER: { KillTimer(hwnd, 1); replaceCurrentQueue = true; break; } case WM_COPYDATA: { COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam; int32 count = pcds->dwData; char* array = (char*)pcds->lpData; char path[MAX_PATH]; char url[MAX_PATH + 7]; uint32 length = sizeof(url); int offset = 0; KillTimer(hwnd, 1); bool playNow = false; context->prefs->GetPrefBoolean(kPlayImmediatelyPref, &playNow); // If a single theme or rpm file gets passed, don't affect // the play queue if (strcasecmp("fat", array + strlen(array) - 3) == 0 || strcasecmp("rmp", array + strlen(array) - 3) == 0) playNow = false; if(playNow) { if(replaceCurrentQueue) { context->target->AcceptEvent(new Event(CMD_Stop)); context->plm->RemoveAll(); replaceCurrentQueue = false; } } for(int32 i = 0; i < count; i++) { strcpy(path, array + offset); offset += strlen(path) + 1; // is this a URL we know how to handle if( !strncasecmp(path, "http://", 7) || !strncasecmp(path, "rtp://", 6)) { context->plm->AddItem(path); if(playNow) { SetTimer(hwnd, 1, 1000, NULL); } continue; } HANDLE handle; WIN32_FIND_DATA data; handle = FindFirstFile(path, &data); if(handle != INVALID_HANDLE_VALUE) { char* cp = NULL; cp = strrchr(path, '\\'); if(cp) { strcpy(cp + 1, data.cFileName); } FindClose(handle); } FilePathToURL(path, url, &length); // who needs to get this, plm or dlm? bool giveToDLM = false; bool giveToTheme = false; char* extension = NULL; PlaylistManager* plm = context->plm; DownloadManager* dlm = context->downloadManager; extension = strrchr(url, '.'); if(extension) { DownloadFormatInfo dlfi; uint32 i = 0; extension++; while(IsntError(dlm->GetSupportedDownloadFormats(&dlfi, i++))) { if(!strcasecmp(extension, dlfi.GetExtension())) { giveToDLM = true; break; } } if (strcasecmp(extension, themeExtension) == 0) giveToTheme = true; } if(giveToDLM) dlm->ReadDownloadFile(url); else if(giveToTheme) context->player->AddTheme(url); else plm->AddItem(url); if(playNow) { SetTimer(hwnd, 1, 1000, NULL); } } break; } case WM_DISPLAYCHANGE: { context->target->AcceptEvent(new Event(INFO_PrefsChanged)); break; } default: result = DefWindowProc(hwnd, msg, wParam, lParam); break; } return result; }
bool SendCommandLineToRealJukebox() { bool result = false; Registrar registrar; Registry formatRegistry; Win32Prefs prefs; vector<DownloadFormatInfo*> formats; // init registrar.SetSubDir("plugins"); registrar.SetSearchString("*.dlf"); registrar.InitializeRegistry(&formatRegistry, &prefs); const RegistryItem* module = NULL; DownloadFormat* dlf = NULL; int32 i = 0; while((module = formatRegistry.GetItem(i++))) { dlf = (DownloadFormat*) module->InitFunction()(NULL); if(dlf) { DownloadFormatInfo dlfi; uint32 index = 0; // error != kError_NoMoreFormats while(IsntError(dlf->GetSupportedFormats(&dlfi, index++))) { dlfi.SetRef(dlf); formats.push_back(new DownloadFormatInfo(dlfi)); } } } vector<DownloadFormatInfo*>::iterator dlfIter; if(__argc > 1) { char* extension; extension = strrchr(__argv[1], '.'); if(extension) { extension++; for(dlfIter = formats.begin(); dlfIter != formats.end(); dlfIter++) { if(!strcasecmp(extension, (*dlfIter)->GetExtension())) { vector<DownloadItem*> items; char url[MAX_PATH + 7]; uint32 size = sizeof(url); Error err; err = FilePathToURL(__argv[1], url, &size); if(IsntError(err)) { (*dlfIter)->GetRef()->ReadDownloadFile(url, &items); vector<DownloadItem*>::iterator dliIter; for(dliIter = items.begin(); dliIter != items.end(); dliIter++) { MetaData metadata = (*dliIter)->GetMetaData(); if( strcasecmp("mp3", metadata.FormatExtension().c_str()) && strcasecmp("mp2", metadata.FormatExtension().c_str()) && strcasecmp("mp1", metadata.FormatExtension().c_str()) && strcasecmp("m3u", metadata.FormatExtension().c_str()) && strcasecmp("pls", metadata.FormatExtension().c_str()) ) { bool rjFound = false; result = true; LONG regErr; HKEY key; regErr = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\realjbox.exe", 0, KEY_WRITE|KEY_READ, &key); if(regErr == ERROR_SUCCESS) { char buf[MAX_PATH*2]; DWORD len = sizeof(buf); DWORD type; regErr = RegQueryValueEx(key, NULL, NULL, &type, (LPBYTE)buf, &len); if(regErr == ERROR_SUCCESS) { rjFound = true; strcat(buf, " /m application/vnd.rn-rn_music_package "); strcat(buf, __argv[1]); WinExec(buf, SW_NORMAL); } } if(!rjFound) { MessageBox(NULL, The_BRANDING" does not support the formats " "contained in this Music Package. The download " "will be aborted.", "Unsupported Formats", MB_OK); DeleteFile(__argv[1]); } } } } break; } } } } // clean up for(dlfIter = formats.begin(); dlfIter != formats.end(); dlfIter++) { delete (*dlfIter)->GetRef(); delete (*dlfIter); } return result; }