mirror of https://github.com/kiwix/libkiwix.git
LibraryManipulator is now merely a notifier
Originally `LibraryManipulator` was an abstract class completely decoupled from `Library`. Its `addBookToLibrary()` and `addBookmarkToLibrary()` methods could be defined in an arbitrary way. Now `LibraryManipulator` has to be bound to a library object, those methods are no longer virtual, they always update the library and allow for some additional actions via virtual functions `bookWasAddedToLibrary()` and `bookmarkWasAddedToLibrary()`.
This commit is contained in:
parent
76a5e3a877
commit
226dac2604
|
@ -35,26 +35,23 @@ class xml_document;
|
||||||
namespace kiwix
|
namespace kiwix
|
||||||
{
|
{
|
||||||
|
|
||||||
class LibraryManipulator {
|
class LibraryManipulator
|
||||||
public:
|
{
|
||||||
virtual ~LibraryManipulator() {}
|
public: // functions
|
||||||
virtual bool addBookToLibrary(Book book) = 0;
|
explicit LibraryManipulator(Library* library);
|
||||||
virtual void addBookmarkToLibrary(Bookmark bookmark) = 0;
|
virtual ~LibraryManipulator();
|
||||||
};
|
|
||||||
|
|
||||||
class DefaultLibraryManipulator : public LibraryManipulator {
|
Library& getLibrary() const { return library; }
|
||||||
public:
|
|
||||||
DefaultLibraryManipulator(Library* library) :
|
bool addBookToLibrary(const Book& book);
|
||||||
library(library) {}
|
void addBookmarkToLibrary(const Bookmark& bookmark);
|
||||||
virtual ~DefaultLibraryManipulator() {}
|
|
||||||
bool addBookToLibrary(Book book) {
|
protected: // overrides
|
||||||
return library->addBook(book);
|
virtual void bookWasAddedToLibrary(const Book& book);
|
||||||
}
|
virtual void bookmarkWasAddedToLibrary(const Bookmark& bookmark);
|
||||||
void addBookmarkToLibrary(Bookmark bookmark) {
|
|
||||||
library->addBookmark(bookmark);
|
private: // data
|
||||||
}
|
kiwix::Library& library;
|
||||||
private:
|
|
||||||
kiwix::Library* library;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -37,6 +37,44 @@ struct NoDelete
|
||||||
|
|
||||||
} // unnamed namespace
|
} // unnamed namespace
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// LibraryManipulator
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
LibraryManipulator::LibraryManipulator(Library* library)
|
||||||
|
: library(*library)
|
||||||
|
{}
|
||||||
|
|
||||||
|
LibraryManipulator::~LibraryManipulator()
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool LibraryManipulator::addBookToLibrary(const Book& book)
|
||||||
|
{
|
||||||
|
const auto ret = library.addBook(book);
|
||||||
|
if ( ret ) {
|
||||||
|
bookWasAddedToLibrary(book);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LibraryManipulator::addBookmarkToLibrary(const Bookmark& bookmark)
|
||||||
|
{
|
||||||
|
library.addBookmark(bookmark);
|
||||||
|
bookmarkWasAddedToLibrary(bookmark);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LibraryManipulator::bookWasAddedToLibrary(const Book& book)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void LibraryManipulator::bookmarkWasAddedToLibrary(const Bookmark& bookmark)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Manager
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/* Constructor */
|
/* Constructor */
|
||||||
Manager::Manager(LibraryManipulator* manipulator):
|
Manager::Manager(LibraryManipulator* manipulator):
|
||||||
writableLibraryPath(""),
|
writableLibraryPath(""),
|
||||||
|
@ -46,7 +84,7 @@ Manager::Manager(LibraryManipulator* manipulator):
|
||||||
|
|
||||||
Manager::Manager(Library* library) :
|
Manager::Manager(Library* library) :
|
||||||
writableLibraryPath(""),
|
writableLibraryPath(""),
|
||||||
manipulator(new DefaultLibraryManipulator(library))
|
manipulator(new LibraryManipulator(library))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue