The first part of my project is to add notes support, the page note itself is just like a normal page, and displayed on the drawing canvas, so we can add any shapes to the note (just as we can to a regular slide). This is possible due to the Flake library in KOffice, which makes this task quite easy to do.
The next part of my project is to add "Presenter View" functionality. Presenter View is a feature which allows the presenter to have an additional display which shows extra information, such as: current slide and next slide preview, presentation notes for the page being presented, current time, a stopwatch, and slide previews to make navigation easier. Presenter View can also be found in similar software applications, such as Microsoft PowerPoint, OpenOffice.org Impress, and Apple Keynote.
To activate this feature, the system must at least have two screens, with one used as the Presenter View screen, and the other one used as the normal presentation screen (both are in fullscreen mode). Fortunately, with the help of Qt's API, adding support for multiple monitors can be easily achieved. The following screenshot shows multiple screen configuration and the Presenter View configuration.
The current implementation is already usable, and the user can enable the presenter view, view previews for the current and next slides, with a box showing presentation notes, page navigation, and a clock and stopwatch. The presentation canvas and current slide preview inside the presenter view are synchronised, meaning that every animation shown in the presentation canvas is also shown in the current slide preview, synchronously.
Initially, this feature was implemented by creating a new KPresenter view, and then using the new view to display the presentation widget. But this implementation led to complications and difficulty synchronising the presentation canvas and current slide preview. The current implementation uses only one view, but every view can support more than one canvas, leading to an easier and cleaner synchronisation. Furthermore, it can be even extended to handle more than two canvases (for example if we have more than two screens and we want to provide one presentation canvas per screen).
For the next goal, I am going to install a help screen as a guide to users when using this feature. As a longer term goal, I am planning to make the Presenter View look better, and to achieve this I surely need help from the highly-talented KDE artists! I am also planning to add several missing features that currently cannot be implemented due to the incomplete framework in KPresenter, such as the option to blank the presentation screen to white or black.
The main interface of the Presenter View. By using this interface, the presenter gets an overview about the currently active slide, the presentation notes associated with it, the next slide, current time, and how long the presenter has been delivering the slides.
Another interface in the Presenter View feature is an overview of all slides in the presentation. By using this interface, the presenter can browse all available slides and jump to any slide by simply clicking the slide thumbnail.
Look forward to my work in KPresenter 2!