static void runScan(void) { loadMusic(); if ("" != gMusicData->startdir) { FileScanner *fscan = new FileScanner(); fscan->SearchDir(gMusicData->startdir); gMusicData->reloadMusic(); delete fscan; } }
static void runScan(void) { // maybe we haven't loaded the music yet in which case we wont have a valid music dir set if (gMusicData->musicDir.isEmpty()) { QString startdir = gCoreContext->GetSetting("MusicLocation"); startdir = QDir::cleanPath(startdir); if (!startdir.isEmpty() && !startdir.endsWith("/")) startdir += "/"; gMusicData->musicDir = startdir; } // if we still don't have a valid start dir warn the user and give up if (gMusicData->musicDir.isEmpty()) { ShowOkPopup(QObject::tr("You need to tell me where to find your music on the " "'General Settings' page of MythMusic's settings pages.")); return; } if (!QFile::exists(gMusicData->musicDir)) { ShowOkPopup(QObject::tr("Can't find your music directory. Have you set it correctly on the " "'General Settings' page of MythMusic's settings pages?")); return; } LOG(VB_GENERAL, LOG_INFO, QString("Scanning '%1' for music files").arg(gMusicData->musicDir)); FileScanner *fscan = new FileScanner(); fscan->SearchDir(gMusicData->musicDir); // save anything that may have changed if (gMusicData->all_music && gMusicData->all_music->cleanOutThreads()) gMusicData->all_music->save(); if (gMusicData->all_playlists && gMusicData->all_playlists->cleanOutThreads()) { gMusicData->all_playlists->save(); int x = gMusicData->all_playlists->getPending(); SavePending(x); } // force a complete reload of the tracks and playlists gPlayer->stop(true); delete gMusicData; gMusicData = new MusicData; loadMusic(); delete fscan; }
static void MusicCallback(void *data, QString &selection) { (void) data; QString sel = selection.toLower(); if (sel == "music_create_playlist") startDatabaseTree(); else if (sel == "music_play") startPlayback(); else if (sel == "music_rip") { startRipper(); } else if (sel == "music_import") { startImport(); } else if (sel == "settings_scan") { if ("" != gMusicData->startdir) { loadMusic(); FileScanner *fscan = new FileScanner(); fscan->SearchDir(gMusicData->startdir); gMusicData->reloadMusic(); delete fscan; } } else if (sel == "music_set_general") { MusicGeneralSettings settings; settings.exec(); } else if (sel == "music_set_player") { MusicPlayerSettings settings; settings.exec(); } else if (sel == "music_set_ripper") { MusicRipperSettings settings; settings.exec(); } }
static void loadMusic() { // only do this once if (gMusicData->initialized) return; MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack"); QString message = QObject::tr("Loading Music. Please wait ..."); MythUIBusyDialog *busy = new MythUIBusyDialog(message, popupStack, "musicscanbusydialog"); if (busy->Create()) popupStack->AddScreen(busy, false); else busy = NULL; srand(time(NULL)); CheckFreeDBServerFile(); MSqlQuery count_query(MSqlQuery::InitCon()); bool musicdata_exists = false; if (count_query.exec("SELECT COUNT(*) FROM music_songs;")) { if(count_query.next() && 0 != count_query.value(0).toInt()) { musicdata_exists = true; } } // Load all available info about songs (once!) QString startdir = gCoreContext->GetSetting("MusicLocation"); startdir = QDir::cleanPath(startdir); if (!startdir.endsWith("/")) startdir += "/"; Metadata::SetStartdir(startdir); Decoder::SetLocationFormatUseTags(); // Only search music files if a directory was specified & there // is no data in the database yet (first run). Otherwise, user // can choose "Setup" option from the menu to force it. if (!startdir.isEmpty() && !musicdata_exists) { FileScanner *fscan = new FileScanner(); fscan->SearchDir(startdir); delete fscan; } QString paths = gCoreContext->GetSetting("TreeLevels"); // Set the various track formatting modes Metadata::setArtistAndTrackFormats(); AllMusic *all_music = new AllMusic(paths, startdir); // Load all playlists into RAM (once!) PlaylistContainer *all_playlists = new PlaylistContainer( all_music, gCoreContext->GetHostName()); gMusicData->paths = paths; gMusicData->startdir = startdir; gMusicData->all_playlists = all_playlists; gMusicData->all_music = all_music; gMusicData->initialized = true; while (!gMusicData->all_playlists->doneLoading() || !gMusicData->all_music->doneLoading()) { qApp->processEvents(); usleep(50000); } gMusicData->all_playlists->postLoad(); gPlayer->constructPlaylist(); if (busy) busy->Close(); }