diff options
Diffstat (limited to 'svx/source/dialog/docrecovery.cxx')
-rw-r--r-- | svx/source/dialog/docrecovery.cxx | 73 |
1 files changed, 60 insertions, 13 deletions
diff --git a/svx/source/dialog/docrecovery.cxx b/svx/source/dialog/docrecovery.cxx index b0a0653429d0..b7b32b35f6cf 100644 --- a/svx/source/dialog/docrecovery.cxx +++ b/svx/source/dialog/docrecovery.cxx @@ -539,15 +539,21 @@ PluginProgressWindow::PluginProgressWindow( vcl::Window* PluginProgressWindow::~PluginProgressWindow() { + disposeOnce(); +} + +void PluginProgressWindow::dispose() +{ if (m_xProgress.is()) m_xProgress->dispose(); + vcl::Window::dispose(); } PluginProgress::PluginProgress( vcl::Window* pParent, const css::uno::Reference< css::uno::XComponentContext >& xContext ) { - m_pPlugProgressWindow = new PluginProgressWindow(pParent, static_cast< css::lang::XComponent* >(this)); + m_pPlugProgressWindow = VclPtr<PluginProgressWindow>::Create(pParent, static_cast< css::lang::XComponent* >(this)); css::uno::Reference< css::awt::XWindow > xProgressWindow = VCLUnoHelper::GetInterface(m_pPlugProgressWindow); m_xProgressFactory = css::task::StatusIndicatorFactory::createWithWindow(xContext, xProgressWindow, sal_False/*DisableReschedule*/, sal_True/*AllowParentShow*/); m_xProgress = m_xProgressFactory->createStatusIndicator(); @@ -660,10 +666,23 @@ SaveDialog::SaveDialog(vcl::Window* pParent, RecoveryCore* pCore) } } +SaveDialog::~SaveDialog() +{ + disposeOnce(); +} + +void SaveDialog::dispose() +{ + m_pTitleFT.clear(); + m_pFileListLB.clear(); + m_pOkBtn.clear(); + Dialog::dispose(); +} + IMPL_LINK_NOARG(SaveDialog, OKButtonHdl) { // start crash-save with progress - boost::scoped_ptr<SaveProgressDialog> pProgress(new SaveProgressDialog(this, m_pCore)); + ScopedVclPtrInstance< SaveProgressDialog > pProgress(this, m_pCore); short nResult = pProgress->Execute(); pProgress.reset(); @@ -690,6 +709,17 @@ SaveProgressDialog::SaveProgressDialog(vcl::Window* pParent, RecoveryCore* pCore m_xProgress = css::uno::Reference< css::task::XStatusIndicator >(static_cast< css::task::XStatusIndicator* >(pProgress), css::uno::UNO_QUERY_THROW); } +SaveProgressDialog::~SaveProgressDialog() +{ + disposeOnce(); +} + +void SaveProgressDialog::dispose() +{ + m_pProgrParent.clear(); + ModalDialog::dispose(); +} + short SaveProgressDialog::Execute() { ::SolarMutexGuard aLock; @@ -808,10 +838,6 @@ RecovDocList::RecovDocList(SvSimpleTableContainer& rParent, ResMgr &rResMgr) { } -RecovDocList::~RecovDocList() -{ -} - void RecovDocList::InitEntry(SvTreeListEntry* pEntry, const OUString& rText, const Image& rImage1, @@ -829,8 +855,8 @@ void RecovDocList::InitEntry(SvTreeListEntry* pEntry, short impl_askUserForWizardCancel(vcl::Window* pParent, sal_Int16 nRes) { - MessageDialog aQuery(pParent, SVX_RES(nRes), VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO); - if (aQuery.Execute() == RET_YES) + ScopedVclPtrInstance< MessageDialog > aQuery(pParent, SVX_RES(nRes), VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO); + if (aQuery->Execute() == RET_YES) return DLG_RET_OK; else return DLG_RET_CANCEL; @@ -858,7 +884,7 @@ RecoveryDialog::RecoveryDialog(vcl::Window* pParent, RecoveryCore* pCore) Size aSize(LogicToPixel(Size(RECOV_CONTROLWIDTH, RECOV_FILELISTHEIGHT), MAP_APPFONT)); pFileListLBContainer->set_width_request(aSize.Width()); pFileListLBContainer->set_height_request(aSize.Height()); - m_pFileListLB = new RecovDocList(*pFileListLBContainer, DIALOG_MGR()); + m_pFileListLB = VclPtr<RecovDocList>::Create(*pFileListLBContainer, DIALOG_MGR()); static long nTabs[] = { 2, 0, 40*RECOV_CONTROLWIDTH/100 }; m_pFileListLB->SetTabs( &nTabs[0] ); @@ -901,7 +927,18 @@ RecoveryDialog::RecoveryDialog(vcl::Window* pParent, RecoveryCore* pCore) RecoveryDialog::~RecoveryDialog() { - delete m_pFileListLB; + disposeOnce(); +} + +void RecoveryDialog::dispose() +{ + m_pFileListLB.disposeAndClear(); + m_pTitleFT.clear(); + m_pDescrFT.clear(); + m_pProgrParent.clear(); + m_pNextBtn.clear(); + m_pCancelBtn.clear(); + Dialog::dispose(); } short RecoveryDialog::execute() @@ -951,7 +988,7 @@ short RecoveryDialog::execute() // failed recovery documents. They must be saved to // a user selected directrory. short nRet = DLG_RET_UNKNOWN; - boost::scoped_ptr<BrokenRecoveryDialog> pBrokenRecoveryDialog(new BrokenRecoveryDialog(this, m_pCore, !m_bWasRecoveryStarted)); + ScopedVclPtrInstance< BrokenRecoveryDialog > pBrokenRecoveryDialog(this, m_pCore, !m_bWasRecoveryStarted); OUString sSaveDir = pBrokenRecoveryDialog->getSaveDirURL(); // get the default dir if (pBrokenRecoveryDialog->isExecutionNeeded()) { @@ -1020,7 +1057,7 @@ short RecoveryDialog::execute() // If no temp files exists or user decided to ignore it ... // we have to remove all recovery/session data anyway! short nRet = DLG_RET_UNKNOWN; - boost::scoped_ptr<BrokenRecoveryDialog> pBrokenRecoveryDialog(new BrokenRecoveryDialog(this, m_pCore, !m_bWasRecoveryStarted)); + ScopedVclPtrInstance< BrokenRecoveryDialog > pBrokenRecoveryDialog(this, m_pCore, !m_bWasRecoveryStarted); OUString sSaveDir = pBrokenRecoveryDialog->getSaveDirURL(); // get the default save location // dialog itself checks if there is a need to copy files for this mode. @@ -1231,9 +1268,19 @@ BrokenRecoveryDialog::BrokenRecoveryDialog(vcl::Window* pParent , impl_refresh(); } - BrokenRecoveryDialog::~BrokenRecoveryDialog() { + disposeOnce(); +} + +void BrokenRecoveryDialog::dispose() +{ + m_pFileListLB.clear(); + m_pSaveDirED.clear(); + m_pSaveDirBtn.clear(); + m_pOkBtn.clear(); + m_pCancelBtn.clear(); + ModalDialog::dispose(); } |