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"; } } } } }
/** * TODO: this test case needs to be removed, since it depends on database, * threading etc, therefore it is not predictable and very hard to fix */ void AlbumModelTest::initTestCase() { tempSuffix = QLatin1String("albummodeltest-") + QTime::currentTime().toString(); dbPath = QDir::temp().absolutePath() + QLatin1Char('/') + tempSuffix; if (QDir::temp().exists(tempSuffix)) { QString msg = QLatin1String("Error creating temp path") + dbPath; QVERIFY2(false, msg.toLatin1().constData()); } QDir::temp().mkdir(tempSuffix); qDebug() << "Using database path for test: " << dbPath; ApplicationSettings::instance()->setShowFolderTreeViewItemsCount(true); // use a testing database AlbumManager::instance(); // catch palbum counts for waiting connect(AlbumManager::instance(), SIGNAL(signalPAlbumsDirty(QMap<int,int>)), this, SLOT(setLastPAlbumCountMap(QMap<int,int>))); AlbumManager::checkDatabaseDirsAfterFirstRun(QDir::temp().absoluteFilePath( tempSuffix), QDir::temp().absoluteFilePath(tempSuffix)); DbEngineParameters params(QLatin1String("QSQLITE"), QDir::temp().absoluteFilePath(tempSuffix + QLatin1String("/digikam4.db")), QString(), QString(), -1, false, QString(), QString()); bool dbChangeGood = AlbumManager::instance()->setDatabase(params, false, QDir::temp().absoluteFilePath(tempSuffix)); QVERIFY2(dbChangeGood, "Could not set temp album db"); QList<CollectionLocation> locs = CollectionManager::instance()->allAvailableLocations(); QVERIFY2(locs.size(), "Failed to auto-create one collection in setDatabase"); ScanController::instance()->completeCollectionScan(); AlbumManager::instance()->startScan(); AlbumList all = AlbumManager::instance()->allPAlbums(); qDebug() << "PAlbum registered : " << all.size(); foreach(Album* const a, all) { if (a) { qDebug() << " ==> Id : " << a->id() << " , is root : " << a->isRoot() << " , title : " << a->title(); } } QVERIFY2( all.size() == 3, "Failed to scan empty directory. We must have one root album, one album, and one trash."); }
/** * @brief Checks whether the newly added album name already exists. * @param name The name of the album. */ bool GPSSearchView::checkAlbum(const QString& name) const { const AlbumList list = AlbumManager::instance()->allSAlbums(); for (AlbumList::ConstIterator it = list.constBegin() ; it != list.constEnd() ; ++it) { const SAlbum* const album = (SAlbum*)(*it); if (album->title() == name) { return false; } } return true; }
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; } }