void EditMetadataDialog::updateImageGrid() { AlbumArtList *albumArtList = albumArt->getImageList(); QSize size = coverart_grid->getImageItemSize(); for (int x = 0; x < albumArtList->size(); x++) { if (albumArtList->at(x)->embedded) continue; QPixmap *pixmap = createScaledPixmap(albumArtList->at(x)->filename, size.width(), size.height(), Qt::KeepAspectRatio); ImageGridItem *item = new ImageGridItem(AlbumArtImages::getTypeName(albumArtList->at(x)->imageType), pixmap, false, (void*) albumArtList->at(x)); coverart_grid->appendItem(item); } coverart_grid->setItemCount(albumArtList->size()); coverart_grid->recalculateLayout(); if (!albumArtList->empty()) gridItemChanged(coverart_grid->getItemAt(0)); coverart_grid->refresh(); }
void EditMetadataDialog::showMenu() { if (coverart_grid->getItemCount() == 0) return; MythPopupBox *menu = new MythPopupBox(GetMythMainWindow(), "menu"); QLabel *caption = menu->addLabel(tr("Change Image Type"), MythPopupBox::Medium); caption->setAlignment(Qt::AlignCenter); menu->addButton(albumArt->getTypeName(IT_UNKNOWN)); menu->addButton(albumArt->getTypeName(IT_FRONTCOVER)); menu->addButton(albumArt->getTypeName(IT_BACKCOVER)); menu->addButton(albumArt->getTypeName(IT_CD)); menu->addButton(albumArt->getTypeName(IT_INLAY)); DialogCode ret = menu->ExecPopup(); int res = MythDialog::CalcItemIndex(ret); if ((IT_UNKNOWN <= res) && (res < IT_LAST)) { // get selected image in grid ImageGridItem *item = coverart_grid->getCurrentItem(); if (item) { item->text = albumArt->getTypeName((ImageType) res); AlbumArtImage *image = (AlbumArtImage*) item->data; if (image) { image->imageType = (ImageType) res; // save the image type to the DB albumArt->saveImageType(image->id, image->imageType); gridItemChanged(item); } } } menu->deleteLater(); }
void EditAlbumartDialog::customEvent(QEvent *event) { if (event->type() == DialogCompletionEvent::kEventType) { DialogCompletionEvent *dce = (DialogCompletionEvent*)(event); // make sure the user didn't ESCAPE out of the menu if (dce->GetResult() < 0) return; QString resultid = dce->GetId(); QString resulttext = dce->GetResultText(); if (resultid == "changetypemenu") { int type = dce->GetData().toInt(); if ((type >= IT_UNKNOWN) && (type < IT_LAST)) { // get selected image in list MythUIButtonListItem *item = m_coverartList->GetItemCurrent(); if (item) { item->SetText(m_albumArt->getTypeName((ImageType) type)); AlbumArtImage *image = qVariantValue<AlbumArtImage*> (item->GetData()); if (image) { AlbumArtImage oldImage = *image; image->imageType = (ImageType) type; if (image->imageType == oldImage.imageType) return; // rename any cached image to match the new type if (image->embedded) { // update the new cached image filename image->filename = QString(GetConfDir() + "/MythMusic/AlbumArt/%1-%2.jpg") .arg(m_metadata->ID()) .arg(AlbumArtImages::getTypeFilename(image->imageType)); if (image->filename != oldImage.filename && QFile::exists(oldImage.filename)) { // remove any old cached file with the same name as the new one QFile::remove(image->filename); // rename the old cached file to the new one QFile::rename(oldImage.filename, image->filename); // force the theme image cache to refresh the image GetMythUI()->RemoveFromCacheByFile(image->filename); } // change the image type in the tag if it supports it MetaIO *tagger = m_metadata->getTagger(); if (tagger && tagger->supportsEmbeddedImages()) { if (!tagger->changeImageType(m_metadata->Filename(), &oldImage, image->imageType)) LOG(VB_GENERAL, LOG_INFO, "EditAlbumartDialog: failed to change image type"); } } else { QFileInfo fi(oldImage.filename); // get the new images filename image->filename = QString(fi.absolutePath() + "/%1.jpg") .arg(AlbumArtImages::getTypeFilename(image->imageType)); if (image->filename != oldImage.filename && QFile::exists(oldImage.filename)) { // remove any old cached file with the same name as the new one QFile::remove(image->filename); // rename the old cached file to the new one QFile::rename(oldImage.filename, image->filename); // force the theme image cache to refresh the image GetMythUI()->RemoveFromCacheByFile(image->filename); } } m_albumArtChanged = true; gridItemChanged(item); } } } } else if (resultid == "asktypemenu") { int type = dce->GetData().toInt(); if ((type >= IT_UNKNOWN) && (type < IT_LAST)) copyImageToTag((ImageType) type); } else if (resultid == "optionsmenu") { if (resulttext == tr("Edit Metadata")) switchToMetadata(); else if (resulttext == tr("Rescan For Images")) rescanForImages(); else if (resulttext == tr("Search Internet For Images")) searchForAlbumImages(); else if (resulttext == tr("Change Image Type")) showTypeMenu(); else if (resulttext == tr("Copy Selected Image To Tag")) copySelectedImageToTag(); else if (resulttext == tr("Remove Selected Image From Tag")) removeSelectedImageFromTag(); else if (resulttext == tr("Copy Image To Tag")) startCopyImageToTag(); } else if (resultid == "imagelocation") { m_imageFilename = resulttext; // save directory location for next time QFileInfo fi(m_imageFilename); gCoreContext->SaveSetting("MusicLastImageLocation", fi.canonicalPath()); showTypeMenu(false); } } else if (event->type() == MythEvent::MythEventMessage) { MythEvent *me = (MythEvent *)event; QStringList tokens = me->Message().split(" ", QString::SkipEmptyParts); if (!tokens.isEmpty()) { if (tokens[0] == "BROWSER_DOWNLOAD_FINISHED") rescanForImages(); } } }