void LastFm::scrobble(Track* track) { if (!track) return; if (sessionKey.isEmpty()) { qWarning() << "Not authenticated to Last.fm"; return; } QUrl url(WS); QMap<QString, QString> params; params["method"] = "track.scrobble"; params["timestamp"] = QString::number(track->getStartTime()); params["track"] = track->getTitle(); Artist* artist = track->getArtist(); if (!artist) { qDebug() << __FUNCTION__ << "Missing artist for" << track; return; } params["artist"] = artist->getName(); Album* album = track->getAlbum(); if (album) params["album"] = album->getTitle(); if (track->getNumber()) params["trackNumber"] = QString::number(track->getNumber()); if (track->getLength()) params["duration"] = QString::number(track->getLength()); params["api_key"] = Constants::LASTFM_API_KEY; params["sk"] = sessionKey; sign(params); The::http()->post(url, params); }
void PlaylistItemDelegate::paintAlbumHeader( QPainter* painter, const QStyleOptionViewItem& option, QRect line, Track* track) const { QString headerTitle; Album *album = track->getAlbum(); if (album) headerTitle = album->getTitle(); Artist *artist = track->getArtist(); if (artist) headerTitle += " - " + artist->getName(); painter->save(); // cover background /* QImage p = album->getPhoto(); if (!p.isNull()) { painter->drawTiledPixmap(line, QPixmap::fromImage(p)); QLinearGradient linearGrad(0, 0, 0, line.height()); linearGrad.setColorAt(0, QColor(0,0,0, 96)); linearGrad.setColorAt(1, QColor(0,0,0, 64)); painter->fillRect(line, QBrush(linearGrad)); } else { QLinearGradient linearGrad(0, 0, 0, line.height()); linearGrad.setColorAt(0, option.palette.color(QPalette::Mid)); linearGrad.setColorAt(1, option.palette.midlight().color()); painter->fillRect(line, QBrush(linearGrad)); }*/ QLinearGradient linearGrad(0, 0, 0, line.height()); #ifdef APP_MAC linearGrad.setColorAt(0, QColor(0x99, 0x99, 0x99, 0xFF)); linearGrad.setColorAt(1, QColor(0xCC, 0xCC, 0xCC, 0xFF)); #else linearGrad.setColorAt(0, option.palette.color(QPalette::Mid)); linearGrad.setColorAt(1, option.palette.color(QPalette::Midlight)); #endif painter->fillRect(line, QBrush(linearGrad)); // borders // painter->setPen(option.palette.color(QPalette::Light)); // painter->drawLine(0, 0, line.width(), 0); painter->setPen(option.palette.color(QPalette::Mid)); painter->drawLine(0, line.height()-1, line.width(), line.height()-1); // font QFont boldFont = painter->font(); boldFont.setBold(true); painter->setFont(boldFont); // text size QSize trackStringSize(QFontMetrics(painter->font()).size(Qt::TextSingleLine, headerTitle)); QPoint textLoc(PADDING*6, 0); QRect trackTextBox(textLoc.x(), textLoc.y(), trackStringSize.width(), line.height()); // text shadow painter->setPen(QColor(0, 0, 0, 64)); painter->drawText(trackTextBox.translated(0, -1), Qt::AlignLeft | Qt::AlignVCenter, headerTitle); // text painter->setPen(option.palette.color(QPalette::Light)); painter->drawText(trackTextBox, Qt::AlignLeft | Qt::AlignVCenter, headerTitle); // album length if (album) { // TODO this is the album duration, but not necessarily what we have in the playlist int totalLength = Track::getTotalLength(album->getTracks()); QString albumLength; if (totalLength > 3600) albumLength = QTime().addSecs(totalLength).toString("h:mm:ss"); else albumLength = QTime().addSecs(totalLength).toString("m:ss"); QFont normalFont = painter->font(); normalFont.setBold(false); // normalFont.setPointSize(boldFont.pointSize()*.9); painter->setFont(normalFont); painter->drawText(line.translated(-PADDING, 0), Qt::AlignRight | Qt::AlignVCenter, albumLength); } // TODO album year painter->restore(); }