void WCoverArtMenu::slotUnset() { CoverInfo coverInfo; coverInfo.type = CoverInfo::NONE; coverInfo.source = CoverInfo::USER_SELECTED; qDebug() << "WCoverArtMenu::slotUnset emit" << coverInfo; emit(coverInfoSelected(coverInfo)); }
void WCoverArtMenu::slotChange() { QFileInfo fileInfo; if (!m_coverInfo.trackLocation.isEmpty()) { fileInfo = QFileInfo(m_coverInfo.trackLocation); } QString initialDir; if (m_coverInfo.type == CoverInfo::FILE) { QFileInfo coverFile(fileInfo.dir(), m_coverInfo.coverLocation); initialDir = coverFile.absolutePath(); } else { // Default to the track's directory if the cover is not // stored in a separate file. initialDir = fileInfo.absolutePath(); } QStringList extensions = CoverArtUtils::supportedCoverArtExtensions(); for (auto&& extension : extensions) { extension.prepend("*."); } QString supportedText = QString("%1 (%2)").arg(tr("Image Files")) .arg(extensions.join(" ")); // open file dialog QString selectedCoverPath = QFileDialog::getOpenFileName( this, tr("Change Cover Art"), initialDir, supportedText); if (selectedCoverPath.isEmpty()) { return; } // TODO(rryan): Ask if user wants to copy the file. CoverInfo coverInfo; // Create a security token for the file. QFileInfo selectedCover(selectedCoverPath); SecurityTokenPointer pToken = Sandbox::openSecurityToken( selectedCover, true); QImage image(selectedCoverPath); if (image.isNull()) { // TODO(rryan): feedback return; } coverInfo.type = CoverInfo::FILE; coverInfo.source = CoverInfo::USER_SELECTED; coverInfo.coverLocation = selectedCoverPath; // TODO() here we may introduce a duplicate hash code coverInfo.hash = CoverArtUtils::calculateHash(image); coverInfo.trackLocation = m_coverInfo.trackLocation; qDebug() << "WCoverArtMenu::slotChange emit" << coverInfo; emit(coverInfoSelected(coverInfo)); }