void SCPresenterViewInterface::setPreviewSize(const QSize &size)
{
    m_previewSize = size;
    m_canvas->setFixedSize(size);

    // set the thumbnail for next page preview
    Q_ASSERT(m_activePage != -1);
    KoPAPage *nextPage = 0;
    if (m_activePage != m_pages.count() - 1) {
        nextPage = m_pages.at(m_activePage + 1);
    }
    else {
        nextPage = m_pages.at(m_activePage);
    }
    m_nextSlidePreview->setPixmap(nextPage->thumbnail(m_previewSize));
}
void SCPresenterViewInterface::setActivePage(int pageIndex)
{
    SCPresenterViewBaseInterface::setActivePage(pageIndex);

    Q_ASSERT(pageIndex >= 0 && pageIndex < m_pages.size());
    KoPAPage *page = m_pages.at(pageIndex);
    int pageCount = dynamic_cast<SCEndOfSlideShowPage *>(m_pages.last()) ?
            m_pages.count() - 1 : m_pages.count();

    // set the thumbnail for next page preview
    KoPAPage *nextPage = 0;
    if (pageIndex != pageCount) {
        nextPage = m_pages.at(pageIndex + 1);
        m_nextSlidePreview->setPixmap(nextPage->thumbnail(m_previewSize));
    }
    else { // End of presentation, just a black pixmap for the next slide preview
        QPixmap pixmap(m_previewSize);
        pixmap.fill(Qt::black);
        m_nextSlidePreview->setPixmap(pixmap);
    }

    // update the label
    m_currentSlideLabel->setText(pageIndex != pageCount ? 
            i18n("Current Slide %1 of %2", pageIndex + 1, pageCount) : 
            i18n("End of Slide Show"));

    // set the presentation notes
    SCPage *prPage = dynamic_cast<SCPage *>(page);
    Q_ASSERT(prPage);
    SCNotes *pageNotes = prPage->pageNotes();
    KShape *textShape = pageNotes->textShape();
    KTextShapeData *textShapeData = qobject_cast<KTextShapeData *>(textShape->userData());
    Q_ASSERT(textShapeData);
    QTextDocument *document = textShapeData->document()->clone(m_notesTextEdit);
    m_notesTextEdit->setDocument(document);
}