void ImageDescEditTab::updateRecentTags() { QMenu* const menu = dynamic_cast<QMenu*>(d->recentTagsBtn->menu()); if (!menu) { return; } menu->clear(); AlbumList recentTags = AlbumManager::instance()->getRecentlyAssignedTags(); if (recentTags.isEmpty()) { QAction* const noTagsAction = menu->addAction(i18n("No Recently Assigned Tags")); noTagsAction->setEnabled(false); } else { for (AlbumList::const_iterator it = recentTags.constBegin(); it != recentTags.constEnd(); ++it) { TAlbum* const album = static_cast<TAlbum*>(*it); if (album) { AlbumThumbnailLoader* const loader = AlbumThumbnailLoader::instance(); QPixmap icon; if (!loader->getTagThumbnail(album, icon)) { if (icon.isNull()) { icon = loader->getStandardTagIcon(album, AlbumThumbnailLoader::SmallerSize); } } TAlbum* const parent = dynamic_cast<TAlbum*> (album->parent()); if (parent) { QString text = album->title() + QLatin1String(" (") + parent->prettyUrl() + QLatin1Char(')'); QAction* const action = menu->addAction(icon, text, d->recentTagsMapper, SLOT(map())); d->recentTagsMapper->setMapping(action, album->id()); } else { qCDebug(DIGIKAM_GENERAL_LOG) << "Tag" << album << "doesn't have a valid parent"; } } } } }
TAlbum* TagModificationHelper::slotTagNew(TAlbum* parent, const QString& title, const QString& iconName) { // ensure that there is a parent AlbumPointer<TAlbum> p(parent); if (!p) { p = AlbumManager::instance()->findTAlbum(0); if (!p) { kError() << "Could not find root tag album"; return 0; } } QString editTitle = title; QString editIconName = iconName; QKeySequence ks; if (title.isEmpty()) { bool doCreate = TagEditDlg::tagCreate(d->dialogParent, p, editTitle, editIconName, ks); if (!doCreate || !p) { return 0; } } QMap<QString, QString> errMap; AlbumList tList = TagEditDlg::createTAlbum(p, editTitle, editIconName, ks, errMap); TagEditDlg::showtagsListCreationError(d->dialogParent, errMap); if (errMap.isEmpty() && !tList.isEmpty()) { TAlbum* const tag = static_cast<TAlbum*>(tList.last()); emit tagCreated(tag); return tag; } else { return 0; } }