コード例 #1
0
ファイル: Library.cpp プロジェクト: temper8/FBReader-Tizen
void Library::rebuildMaps() const {
	//FunctionTimer timer(__PRETTY_FUNCTION__);
	myAuthors.clear();
	myBooksByAuthor.clear();
	myTags.clear();
	myBooksByTag.clear();
        myFirstLetters.clear();
        myBooksByFirstLetter.clear();

	for (BookSet::const_iterator it = myBooks.begin(); it != myBooks.end(); ++it) {
		if ((*it).isNull()) {
			continue;
		}

		const AuthorList &bookAuthors = (*it)->authors();
		if (bookAuthors.empty()) {
			myBooksByAuthor[0].push_back(*it);
		} else {
			for(AuthorList::const_iterator jt = bookAuthors.begin(); jt != bookAuthors.end(); ++jt) {
				myBooksByAuthor[*jt].push_back(*it);
			}
		}

		const TagList &bookTags = (*it)->tags();
		if (bookTags.empty()) {
			myBooksByTag[0].push_back(*it);
		} else {
			for(TagList::const_iterator kt = bookTags.begin(); kt != bookTags.end(); ++kt) {
				myBooksByTag[*kt].push_back(*it);
			}
		}

                std::string firstLetter = getFirstTitleLetter((*it)->title());
                if (!firstLetter.empty()) {
                    myBooksByFirstLetter[firstLetter].push_back(*it);
                }

	}
	for (BooksByAuthor::iterator mit = myBooksByAuthor.begin(); mit != myBooksByAuthor.end(); ++mit) {
		myAuthors.push_back(mit->first);
		std::sort(mit->second.begin(), mit->second.end(), BookComparator());
	}
	for (BooksByTag::iterator mjt = myBooksByTag.begin(); mjt != myBooksByTag.end(); ++mjt) {
		myTags.push_back(mjt->first);
		std::sort(mjt->second.begin(), mjt->second.end(), BookComparator());
	}
        for (BooksByFirstLetter::iterator mit = myBooksByFirstLetter.begin(); mit != myBooksByFirstLetter.end(); ++mit) {
                myFirstLetters.push_back(mit->first);
                std::sort(mit->second.begin(), mit->second.end(), BookComparator());
        }
}
コード例 #2
0
void Library::rebuildMaps() const {
	myAuthors.clear();
	myBooksByAuthor.clear();
	myTags.clear();
	myBooksByTag.clear();

	for (BookSet::const_iterator it = myBooks.begin(); it != myBooks.end(); ++it) {
		if ((*it).isNull()) {
			continue;
		}

		const AuthorList &bookAuthors = (*it)->authors();
		if (bookAuthors.empty()) {
			myBooksByAuthor[0].push_back(*it);
		} else {
			for(AuthorList::const_iterator jt = bookAuthors.begin(); jt != bookAuthors.end(); ++jt) {
				myBooksByAuthor[*jt].push_back(*it);
			}
		}

		const TagList &bookTags = (*it)->tags();
		if (bookTags.empty()) {
			myBooksByTag[0].push_back(*it);
		} else {
			for(TagList::const_iterator kt = bookTags.begin(); kt != bookTags.end(); ++kt) {
				myBooksByTag[*kt].push_back(*it);
			}
		}
	}
	for (BooksByAuthor::iterator mit = myBooksByAuthor.begin(); mit != myBooksByAuthor.end(); ++mit) {
		myAuthors.push_back(mit->first);
		std::sort(mit->second.begin(), mit->second.end(), BookComparator());
	}
	for (BooksByTag::iterator mjt = myBooksByTag.begin(); mjt != myBooksByTag.end(); ++mjt) {
		myTags.push_back(mjt->first);
		std::sort(mjt->second.begin(), mjt->second.end(), BookComparator());
	}
}