void MainWindow::openDefaultiTunes() { QString fileName; QFile nameFile("libraryName.mln"); if(nameFile.open(QFile::ReadOnly | QFile::Text)) { fileName = nameFile.readLine(); nameFile.close(); } else { nameFile.close(); return; } QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("Music Collection"), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } statusBar()->showMessage(tr("Parsing iTunes Library......")); _library->empty(); if ( Parser::parse( file, _library ) ) { statusBar()->showMessage(tr("File loaded"), 2000); qDebug() << "Library updated"; emit libraryUpdated(); } }
/* * --------------------------------------------------------- * Slots * --------------------------------------------------------- */ void MainWindow::openiTunesLibrary() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open iTunes Library File"), QDir::currentPath(), tr("iTunes XML Library File(*.xml)")); if (fileName.isEmpty()) return; QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("Music Collection"), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } statusBar()->showMessage(tr("Parsing iTunes Library......")); _library->empty(); if ( Parser::parse( file, _library ) ) { statusBar()->showMessage(tr("File loaded"), 2000); qDebug() << "Library updated"; //output the iTunes library location for easy loading later QFile nameFile("libraryName.mln"); nameFile.open(QFile::ReadWrite | QFile::Truncate); nameFile.write(fileName.toStdString().c_str()); emit libraryUpdated(); } }
/* * --------------------------------------------------------- * Setups * --------------------------------------------------------- */ void MainWindow::createWindow() { QWidget *w = new QWidget; setCentralWidget(w); _playBox = new PlayBox(this); _tracklist = new Tracklist(this); _playlist = new Playlist(_tracklist, this); _colourMapDisplay = new ColourMapDisplay(this); _display = new GridDisplay(600, _tracklist, _dataGrid, this); QGridLayout *gridLayout = new QGridLayout; //fromRow, fromCol, rowSpan, colSpan gridLayout->addWidget( _display, 0, 0, 4, 1); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(new QLabel(tr("Playlists"))); vbox->addWidget(_playlist); vbox->addWidget(new QLabel(tr("Track list"))); vbox->addWidget(_tracklist); vbox->addWidget(_colourMapDisplay); gridLayout->addLayout(vbox,1,1,1,1); connect(_display, SIGNAL(playingTrack(MusicTrack*)), this, SLOT(updateCurrentlyPlaying(MusicTrack*))); connect(this, SIGNAL(libraryUpdated()), _playlist, SLOT(updatePlaylist())); connect(this, SIGNAL(libraryUpdated()), _display, SLOT(reload())); connect(this, SIGNAL(openPredictGridFile(QString)), _display, SLOT(openPredictionGrid(QString))); connect(this, SIGNAL(savePredictGridFile(QString)), _display, SLOT(savePredictionGrid(QString))); connect(this, SIGNAL(playModeChanged()), _display, SLOT(playModeChanged())); connect(this, SIGNAL(cancelButtonSignal()), _display, SLOT(cancelButton())); connect(_display, SIGNAL(fullScreenMode(bool)), this, SLOT(fullScreenMode(bool))); connect(this, SIGNAL(fullScreenModeOff()), _display, SLOT(fullScreenMouse())); connect(_playlist, SIGNAL(SelectedPlaylist(QString)), _display, SLOT(playlistSelected(QString))); connect(_display, SIGNAL(updateColourMap(int *, int)), _colourMapDisplay, SLOT(updateSquare(int *, int))); connect(this, SIGNAL(resetGrid()), _display, SLOT(resetGrid())); w->setLayout(gridLayout); statusBar()->showMessage(tr("Ready")); }
void MpdLibraryDb::connectionChanged(const MPDConnectionDetails &details) { QString dbFile=databaseName(details); DBUG << dbFileName << dbFile; if (dbFile!=dbFileName) { init(dbFile); } else { emit libraryUpdated(); } }
void MusicScanner::scan(const QString &folder, const QString &cacheFile, bool readCache, const QSet<FileOnlySong> &existingSongs) { lastCacheProg=-1; if (!cacheFile.isEmpty() && readCache) { MusicLibraryItemRoot *lib=new MusicLibraryItemRoot; MusicLibraryModel::convertCache(cacheFile); readProgress(0.0); if (lib->fromXML(cacheFile, QDateTime(), folder)) { lib->applyGrouping(); if (!stopRequested) { emit libraryUpdated(lib); } else { delete lib; } return; } else { delete lib; } } if (stopRequested) { return; } count=0; lastUpdate=0; MusicLibraryItemRoot *library = new MusicLibraryItemRoot; QString topLevel=Utils::fixPath(QDir(folder).absolutePath()); QSet<FileOnlySong> existing=existingSongs; scanFolder(library, topLevel, topLevel, existing, 0); if (!stopRequested) { library->applyGrouping(); if (!cacheFile.isEmpty()) { writeProgress(0.0); library->toXML(cacheFile, QDateTime(), this); } emit libraryUpdated(library); } else { delete library; } }
void MusicScanner::scan(const QString &folder, const QString &cacheFile, bool readCache, const QSet<FileOnlySong> &existingSongs) { if (!cacheFile.isEmpty() && readCache) { MusicLibraryItemRoot *lib=new MusicLibraryItemRoot; readProgress(0.0); if (lib->fromXML(cacheFile, 0, 0, folder)) { if (!stopRequested) { emit libraryUpdated(lib); } else { delete lib; } return; } else { delete lib; } } if (stopRequested) { return; } count=0; MusicLibraryItemRoot *library = new MusicLibraryItemRoot; QString topLevel=Utils::fixPath(QDir(folder).absolutePath()); QSet<FileOnlySong> existing=existingSongs; timer.start(); scanFolder(library, topLevel, topLevel, existing, 0); if (!stopRequested) { if (!cacheFile.isEmpty()) { writeProgress(0.0); library->toXML(cacheFile, 0, false, this); } emit libraryUpdated(library); } else { delete library; } }