Ejemplo n.º 1
0
void MainWindow::setupMusicsView()
{
  QStringList headers;
  auto app = (Application*) qApp;

  headers << "Musica" << "Artista" << "Album" << "Tempo" << "Genero";

  ui->musicsView->setColumnCount(5);
  ui->musicsView->setRowCount(app->library->count());
  ui->musicsView->setHorizontalHeaderLabels(headers);

  // Lista todas as músicas da biblioteca.
  for (int i = 0; i < app->library->count(); ++i)
  {
    auto music = app->library->music(i);

    ui->musicsView->setItem(i, 0, new QTableWidgetItem(music.getName()));
    ui->musicsView->setItem(i, 1, new QTableWidgetItem(music.getArtist()));
    ui->musicsView->setItem(i, 2, new QTableWidgetItem(music.getAlbum()));
    ui->musicsView->setItem(i, 3, new QTableWidgetItem(music.getDuration().toString()));
    ui->musicsView->setItem(i, 4, new QTableWidgetItem(music.getGenre()));
  }
}
Ejemplo n.º 2
0
HRESULT PlaybackControls::LoadFile()
{
	mMediaObject.stop();
//	Phonon::State state = mMediaObject.state();
	QPixmap picture;
	picture = getPicture(mFile);
	if (!picture.isNull())
	{
		mpParentWindow->id3Art->setPixmap(picture.scaledToHeight(128));
	}
	QString metadata = getArtist(mFile);
	mpParentWindow->artistLabel->setText("Artist : " + metadata);
	metadata = getAlbum(mFile);
	mpParentWindow->albumLabel->setText("Album : " + metadata);
	metadata = getTitle(mFile);
	mpParentWindow->titleLabel->setText("Title : " + metadata);

	mMediaObject.setCurrentSource(mFile);
	QStringList list = mMediaObject.metaData(Phonon::TitleMetaData);
//	bool test = list.isEmpty();
	mAudioOutput.setVolume(mVolume / 100.0);
	volumeChanged(mVolume);
	return 0;
}
/** Redefined from MiamSortFilterProxyModel. */
bool UniqueLibraryFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
	QStandardItem *item = _model->itemFromIndex(_model->index(sourceRow, 1, sourceParent));
	if (!item) {
		return false;
	}
	bool result = false;
	switch (item->type()) {
	case Miam::IT_Artist:
		if (MiamSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent)) {
			result = true;
		} else {
			SqlDatabase db;
			db.open();
			QSqlQuery getArtist(db);
			getArtist.setForwardOnly(true);
			getArtist.prepare("SELECT * FROM tracks WHERE title LIKE ? AND artistId = ?");
			getArtist.addBindValue("%" + filterRegExp().pattern() + "%");
			getArtist.addBindValue(item->data(Miam::DF_ID).toUInt());
			result = getArtist.exec() && getArtist.next();
		}
		break;
	case Miam::IT_Album:
		if (MiamSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent)) {
			result = true;
		} else if (filterRegExp().indexIn(item->data(Miam::DF_Artist).toString()) != -1) {
			result = true;
		} else {
			SqlDatabase db;
			db.open();
			QSqlQuery getAlbum(db);
			getAlbum.setForwardOnly(true);
			getAlbum.prepare("SELECT * FROM tracks WHERE title LIKE ? AND albumId = ?");
			getAlbum.addBindValue("%" + filterRegExp().pattern() + "%");
			getAlbum.addBindValue(item->data(Miam::DF_ID).toUInt());
			result = getAlbum.exec() && getAlbum.next();
		}
		break;
	case Miam::IT_Disc:
		if (filterRegExp().indexIn(item->data(Miam::DF_Artist).toString()) != -1) {
			result = true;
		} else {
			SqlDatabase db;
			db.open();
			QSqlQuery getDiscAlbum(db);
			getDiscAlbum.setForwardOnly(true);
			getDiscAlbum.prepare("SELECT * FROM tracks WHERE disc > 0 AND title LIKE ? AND albumId = ?");
			getDiscAlbum.addBindValue("%" + filterRegExp().pattern() + "%");
			getDiscAlbum.addBindValue(item->data(Miam::DF_ID).toUInt());
			result = getDiscAlbum.exec() && getDiscAlbum.next();
		}
		break;
	case Miam::IT_Track:
		if (MiamSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent)) {
			result = true;
		} else {
			result = filterRegExp().indexIn(item->data(Miam::DF_Artist).toString()) != -1 ||
					filterRegExp().indexIn(item->data(Miam::DF_Album).toString()) != -1;
		}
		break;
	case Miam::IT_Separator:
		for (QModelIndex index : _topLevelItems.values(static_cast<SeparatorItem*>(item))) {
			if (filterAcceptsRow(index.row(), sourceParent)) {
				result = true;
			}
		}
		break;
	default:
		break;
	}
	return result;
}
void squeezeboxHelper::anslyzeSearch(QString text,QList<SqueezeSearchAlbum> *Album,QList<SqueezeSearchTrack> *Track,QList<SqueezeSearchContributor> *Contributor)
{
    qDebug()<<"Searching command found";
    qDebug()<<text;

    int numberOfAlbums,count;
    int album1,album2,albumCount,id1,id2;
    QString album,id;
    numberOfAlbums=text.count("album_id%3A",Qt::CaseSensitive);


    count=0;
    album1=0;
    id1=0;
    albumCount=0;
    Album->clear();

    while (albumCount<numberOfAlbums)
    {
        album1=text.indexOf("album%3A",album1+albumCount);
        album2=text.indexOf(" ",album1+3);

        id1=text.indexOf("album_id%3A",id1+albumCount);
        id2=text.indexOf(" ",id1+3);

        album=text.mid(album1,(album2-album1));

        id=text.mid(id1+11,(id2-(id1+11)));



        album_Search.albumName=getAlbumName(album);
        album_Search.albumId=id;
        qDebug()<<"Album Name="<<album_Search.albumName;
        qDebug()<<"Album ID="<<album_Search.albumId;
        Album->append(album_Search);


        albumCount++;

    }


    numberOfAlbums=text.count("contributor_id%3A",Qt::CaseSensitive);

    count=0;
    album1=0;
    id1=0;
    albumCount=0;
    Contributor->clear();

    while (albumCount<numberOfAlbums)
    {
        album1=text.indexOf("contributor%3A",album1+albumCount);
        album2=text.indexOf(" ",album1+3);
        if (album2==-1)album2=text.count();

        id1=text.indexOf("contributor_id%3A",id1+albumCount);
        id2=text.indexOf(" ",id1+3);
        if (id2==-1)id2=text.count();

        album=text.mid(album1,(album2-album1));

        id=text.mid(id1+17,(id2-(id1+17)));



        contributor_Search.ContributorName=getAlbum(album,"contributor%3A");
        contributor_Search.ContributorId=id;
        qDebug()<<"Contributor Name="<<contributor_Search.ContributorName;
        qDebug()<<"Contributor ID="<<contributor_Search.ContributorId;
        Contributor->append(contributor_Search);


        albumCount++;

    }
 numberOfAlbums=text.count("track_id%3A",Qt::CaseSensitive);
    count=0;
    album1=0;
    id1=0;
    albumCount=0;
    Track->clear();

    while (albumCount<numberOfAlbums)
    {
        album1=text.indexOf("track%3A",album1+albumCount);
        album2=text.indexOf(" ",album1+3);
        if (album2==-1)album2=text.count();

        id1=text.indexOf("track_id%3A",id1+albumCount);
        id2=text.indexOf(" ",id1+3);
        if (id2==-1)id2=text.count();

        album=text.mid(album1,(album2-album1));

        id=text.mid(id1+11,(id2-(id1+11)));



        track_Search.trackName=getAlbum(album,"track%3A");
        track_Search.trackId=id;
        qDebug()<<"Track Name="<<track_Search.trackName;
        qDebug()<<"Track ID="<<track_Search.trackId;
        Track->append(track_Search);


        albumCount++;

    }



}
Ejemplo n.º 5
0
MusicLibraryItemAlbum * MusicLibraryItemArtist::album(const Song &s, bool create)
{
    MusicLibraryItemAlbum *albumItem=getAlbum(s.albumId());
    return albumItem ? albumItem : (create ? createAlbum(s) : 0);
}
Ejemplo n.º 6
0
void BrowseThread::populateModel() {
    m_path_mutex.lock();
    MDir thisPath = m_path;
    BrowseTableModel* thisModelObserver = m_model_observer;
    m_path_mutex.unlock();

    // Refresh the name filters in case we loaded new SoundSource plugins.
    QStringList nameFilters(SoundSourceProxy::getSupportedFileNamePatterns());

    QDirIterator fileIt(thisPath.dir().absolutePath(), nameFilters,
                        QDir::Files | QDir::NoDotAndDotDot);

    // remove all rows
    // This is a blocking operation
    // see signal/slot connection in BrowseTableModel
    emit(clearModel(thisModelObserver));

    QList< QList<QStandardItem*> > rows;

    int row = 0;
    // Iterate over the files
    while (fileIt.hasNext()) {
        // If a user quickly jumps through the folders
        // the current task becomes "dirty"
        m_path_mutex.lock();
        MDir newPath = m_path;
        m_path_mutex.unlock();

        if (thisPath.dir() != newPath.dir()) {
            qDebug() << "Abort populateModel()";
            return populateModel();
        }

        QString filepath = fileIt.next();
        auto pTrack = Track::newTemporary(filepath, thisPath.token());
        SoundSourceProxy(pTrack).updateTrackFromSource();

        QList<QStandardItem*> row_data;

        QStandardItem* item = new QStandardItem("0");
        item->setData("0", Qt::UserRole);
        row_data.insert(COLUMN_PREVIEW, item);

        item = new QStandardItem(pTrack->getFileName());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_FILENAME, item);

        item = new QStandardItem(pTrack->getArtist());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_ARTIST, item);

        item = new QStandardItem(pTrack->getTitle());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_TITLE, item);

        item = new QStandardItem(pTrack->getAlbum());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_ALBUM, item);

        item = new QStandardItem(pTrack->getAlbumArtist());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_ALBUMARTIST, item);

        item = new QStandardItem(pTrack->getTrackNumber());
        item->setToolTip(item->text());
        item->setData(item->text().toInt(), Qt::UserRole);
        row_data.insert(COLUMN_TRACK_NUMBER, item);

        const QString year(pTrack->getYear());
        item = new YearItem(year);
        item->setToolTip(year);
        // The year column is sorted according to the numeric calendar year
        item->setData(mixxx::TrackMetadata::parseCalendarYear(year), Qt::UserRole);
        row_data.insert(COLUMN_YEAR, item);

        item = new QStandardItem(pTrack->getGenre());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_GENRE, item);

        item = new QStandardItem(pTrack->getComposer());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_COMPOSER, item);

        item = new QStandardItem(pTrack->getGrouping());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_GROUPING, item);

        item = new QStandardItem(pTrack->getComment());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_COMMENT, item);

        QString duration = pTrack->getDurationText(mixxx::Duration::Precision::SECONDS);
        item = new QStandardItem(duration);
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_DURATION, item);

        item = new QStandardItem(pTrack->getBpmText());
        item->setToolTip(item->text());
        item->setData(pTrack->getBpm(), Qt::UserRole);
        row_data.insert(COLUMN_BPM, item);

        item = new QStandardItem(pTrack->getKeyText());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_KEY, item);

        item = new QStandardItem(pTrack->getType());
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_TYPE, item);

        item = new QStandardItem(pTrack->getBitrateText());
        item->setToolTip(item->text());
        item->setData(pTrack->getBitrate(), Qt::UserRole);
        row_data.insert(COLUMN_BITRATE, item);

        QString location = pTrack->getLocation();
        QString nativeLocation = QDir::toNativeSeparators(location);
        item = new QStandardItem(nativeLocation);
        item->setToolTip(nativeLocation);
        item->setData(location, Qt::UserRole);
        row_data.insert(COLUMN_NATIVELOCATION, item);

        QDateTime modifiedTime = pTrack->getFileModifiedTime().toLocalTime();
        item = new QStandardItem(modifiedTime.toString(Qt::DefaultLocaleShortDate));
        item->setToolTip(item->text());
        item->setData(modifiedTime, Qt::UserRole);
        row_data.insert(COLUMN_FILE_MODIFIED_TIME, item);

        QDateTime creationTime = pTrack->getFileCreationTime().toLocalTime();
        item = new QStandardItem(creationTime.toString(Qt::DefaultLocaleShortDate));
        item->setToolTip(item->text());
        item->setData(creationTime, Qt::UserRole);
        row_data.insert(COLUMN_FILE_CREATION_TIME, item);

        const mixxx::ReplayGain replayGain(pTrack->getReplayGain());
        item = new QStandardItem(
                mixxx::ReplayGain::ratioToString(replayGain.getRatio()));
        item->setToolTip(item->text());
        item->setData(item->text(), Qt::UserRole);
        row_data.insert(COLUMN_REPLAYGAIN, item);

        rows.append(row_data);
        ++row;
        // If 10 tracks have been analyzed, send it to GUI
        // Will limit GUI freezing
        if (row % 10 == 0) {
            // this is a blocking operation
            emit(rowsAppended(rows, thisModelObserver));
            qDebug() << "Append " << rows.count() << " from " << filepath;
            rows.clear();
        }
        // Sleep additionally for 10ms which prevents us from GUI freezes
        msleep(20);
    }
    emit(rowsAppended(rows, thisModelObserver));
    qDebug() << "Append last " << rows.count();
}