mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Refactoring - prepare for undo/redo and document modification
This commit is contained in:
@@ -49,14 +49,20 @@ PDFAdvancedFindWidget::~PDFAdvancedFindWidget()
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void PDFAdvancedFindWidget::setDocument(const pdf::PDFDocument* document)
|
||||
void PDFAdvancedFindWidget::setDocument(const pdf::PDFModifiedDocument& document)
|
||||
{
|
||||
if (m_document != document)
|
||||
{
|
||||
m_document = document;
|
||||
m_findResults.clear();
|
||||
updateUI();
|
||||
updateResultsUI();
|
||||
|
||||
// If document is not being reset, then page text should remain the same,
|
||||
// so, there is no need to clear the results.
|
||||
if (document.hasReset())
|
||||
{
|
||||
m_findResults.clear();
|
||||
updateUI();
|
||||
updateResultsUI();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -56,7 +56,7 @@ public:
|
||||
const QMatrix& pagePointToDevicePointMatrix,
|
||||
QList<pdf::PDFRenderError>& errors) const override;
|
||||
|
||||
void setDocument(const pdf::PDFDocument* document);
|
||||
void setDocument(const pdf::PDFModifiedDocument& document);
|
||||
|
||||
protected:
|
||||
virtual void showEvent(QShowEvent* event) override;
|
||||
|
@@ -121,10 +121,10 @@ PDFSidebarWidget::~PDFSidebarWidget()
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void PDFSidebarWidget::setDocument(const pdf::PDFDocument* document, pdf::PDFOptionalContentActivity* optionalContentActivity)
|
||||
void PDFSidebarWidget::setDocument(const pdf::PDFModifiedDocument& document)
|
||||
{
|
||||
m_document = document;
|
||||
m_optionalContentActivity = optionalContentActivity;
|
||||
m_optionalContentActivity = document.getOptionalContentActivity();
|
||||
|
||||
// Update outline
|
||||
m_outlineTreeModel->setDocument(document);
|
||||
|
@@ -36,6 +36,7 @@ namespace pdf
|
||||
class PDFAction;
|
||||
class PDFDocument;
|
||||
class PDFDrawWidgetProxy;
|
||||
class PDFModifiedDocument;
|
||||
class PDFOutlineTreeItemModel;
|
||||
class PDFThumbnailsItemModel;
|
||||
class PDFAttachmentsTreeItemModel;
|
||||
@@ -69,7 +70,7 @@ public:
|
||||
_END
|
||||
};
|
||||
|
||||
void setDocument(const pdf::PDFDocument* document, pdf::PDFOptionalContentActivity* optionalContentActivity);
|
||||
void setDocument(const pdf::PDFModifiedDocument& document);
|
||||
|
||||
/// Returns true, if all items in sidebar are empty
|
||||
bool isEmpty() const;
|
||||
|
@@ -61,7 +61,7 @@ bool PDFTextToSpeech::isValid() const
|
||||
return m_document != nullptr;
|
||||
}
|
||||
|
||||
void PDFTextToSpeech::setDocument(const pdf::PDFDocument* document)
|
||||
void PDFTextToSpeech::setDocument(const pdf::PDFModifiedDocument& document)
|
||||
{
|
||||
if (m_document != document)
|
||||
{
|
||||
|
@@ -34,6 +34,7 @@ namespace pdf
|
||||
{
|
||||
class PDFDocument;
|
||||
class PDFDrawWidgetProxy;
|
||||
class PDFModifiedDocument;
|
||||
}
|
||||
|
||||
namespace pdfviewer
|
||||
@@ -66,7 +67,7 @@ public:
|
||||
bool isValid() const;
|
||||
|
||||
/// Sets active document to text to speech engine
|
||||
void setDocument(const pdf::PDFDocument* document);
|
||||
void setDocument(const pdf::PDFModifiedDocument& document);
|
||||
|
||||
/// Apply settings to the reader
|
||||
void setSettings(const PDFViewerSettings* viewerSettings);
|
||||
|
@@ -959,7 +959,8 @@ void PDFViewerMainWindow::onDocumentReadingFinished()
|
||||
m_recentFileManager->addRecentFile(m_fileInfo.originalFileName);
|
||||
|
||||
m_pdfDocument = result.document;
|
||||
setDocument(m_pdfDocument.data());
|
||||
pdf::PDFModifiedDocument document(m_pdfDocument.data(), m_optionalContentActivity);
|
||||
setDocument(document);
|
||||
|
||||
statusBar()->showMessage(tr("Document '%1' was successfully loaded!").arg(m_fileInfo.fileName), 4000);
|
||||
break;
|
||||
@@ -977,27 +978,36 @@ void PDFViewerMainWindow::onDocumentReadingFinished()
|
||||
updateActionsAvailability();
|
||||
}
|
||||
|
||||
void PDFViewerMainWindow::setDocument(const pdf::PDFDocument* document)
|
||||
void PDFViewerMainWindow::setDocument(pdf::PDFModifiedDocument document)
|
||||
{
|
||||
if (m_optionalContentActivity)
|
||||
if (document.hasReset())
|
||||
{
|
||||
// We use deleteLater, because we want to avoid consistency problem with model
|
||||
// (we set document to the model before activity).
|
||||
m_optionalContentActivity->deleteLater();
|
||||
m_optionalContentActivity = nullptr;
|
||||
if (m_optionalContentActivity)
|
||||
{
|
||||
// We use deleteLater, because we want to avoid consistency problem with model
|
||||
// (we set document to the model before activity).
|
||||
m_optionalContentActivity->deleteLater();
|
||||
m_optionalContentActivity = nullptr;
|
||||
}
|
||||
|
||||
if (document)
|
||||
{
|
||||
m_optionalContentActivity = new pdf::PDFOptionalContentActivity(document, pdf::OCUsage::View, this);
|
||||
}
|
||||
}
|
||||
else if (m_optionalContentActivity)
|
||||
{
|
||||
Q_ASSERT(document);
|
||||
m_optionalContentActivity->setDocument(document);
|
||||
}
|
||||
|
||||
if (document)
|
||||
{
|
||||
m_optionalContentActivity = new pdf::PDFOptionalContentActivity(document, pdf::OCUsage::View, this);
|
||||
}
|
||||
|
||||
m_annotationManager->setDocument(document, m_optionalContentActivity);
|
||||
document.setOptionalContentActivity(m_optionalContentActivity);
|
||||
m_annotationManager->setDocument(document);
|
||||
m_formManager->setDocument(document);
|
||||
m_toolManager->setDocument(document);
|
||||
m_textToSpeech->setDocument(document);
|
||||
m_pdfWidget->setDocument(document, m_optionalContentActivity);
|
||||
m_sidebarWidget->setDocument(document, m_optionalContentActivity);
|
||||
m_pdfWidget->setDocument(document);
|
||||
m_sidebarWidget->setDocument(document);
|
||||
m_advancedFindWidget->setDocument(document);
|
||||
|
||||
if (m_sidebarWidget->isEmpty())
|
||||
@@ -1034,7 +1044,7 @@ void PDFViewerMainWindow::setDocument(const pdf::PDFDocument* document)
|
||||
|
||||
void PDFViewerMainWindow::closeDocument()
|
||||
{
|
||||
setDocument(nullptr);
|
||||
setDocument(pdf::PDFModifiedDocument());
|
||||
m_pdfDocument.reset();
|
||||
updateActionsAvailability();
|
||||
}
|
||||
|
@@ -135,7 +135,7 @@ private:
|
||||
void onRenderingOptionTriggered(bool checked);
|
||||
|
||||
void openDocument(const QString& fileName);
|
||||
void setDocument(const pdf::PDFDocument* document);
|
||||
void setDocument(pdf::PDFModifiedDocument document);
|
||||
void closeDocument();
|
||||
|
||||
void setPageLayout(pdf::PageLayout pageLayout);
|
||||
|
Reference in New Issue
Block a user