``AbstractViewer`` provides a generalized API to view, save, and print a document. Properties of both the document and the viewer can be queried: * Does the document have content? * Has it been modified? * Is an overview (thumbnails or bookmarks) supported? ``AbstractViewer`` provides protected methods for derived classes to create actions and menus on the main window. In order to display these assets on the main window, they are parented to it. ``AbstractViewer`` is responsible for removing and destroying the UI assets it creates. It inherits from ``QObject`` to implement signals and slots. The ``uiInitialized()`` signal is emitted after a viewer receives all necessary information about UI assets on the main window. The ``printingEnabledChanged()`` signal is emitted when document printing is either enabled or disabled. This happens after a new document was successfully loaded, or, for example, all content was removed. The ``printStatusChanged`` signal notifies about changes in its progress after starting the printing process. The ``documentLoaded()`` signal notifies the application that a document was successfully loaded.