diff options
Diffstat (limited to 'vcl/generic/print')
-rw-r--r-- | vcl/generic/print/genprnpsp.cxx | 22 | ||||
-rw-r--r-- | vcl/generic/print/prtsetup.cxx | 50 | ||||
-rw-r--r-- | vcl/generic/print/prtsetup.hxx | 43 |
3 files changed, 81 insertions, 34 deletions
diff --git a/vcl/generic/print/genprnpsp.cxx b/vcl/generic/print/genprnpsp.cxx index 71f35eb2d3e0..05dfc4003351 100644 --- a/vcl/generic/print/genprnpsp.cxx +++ b/vcl/generic/print/genprnpsp.cxx @@ -91,16 +91,24 @@ namespace class QueryString : public ModalDialog { private: - OKButton* m_pOKButton; - FixedText* m_pFixedText; - Edit* m_pEdit; - OUString& m_rReturnValue; + VclPtr<OKButton> m_pOKButton; + VclPtr<FixedText> m_pFixedText; + VclPtr<Edit> m_pEdit; + OUString& m_rReturnValue; DECL_LINK( ClickBtnHdl, Button* ); public: // parent window, Query text, initial value QueryString(vcl::Window*, OUString &, OUString &); + virtual ~QueryString() { disposeOnce(); } + virtual void dispose() SAL_OVERRIDE + { + m_pOKButton.clear(); + m_pFixedText.clear(); + m_pEdit.clear(); + ModalDialog::dispose(); + } }; /* @@ -136,8 +144,8 @@ namespace int QueryFaxNumber(OUString& rNumber) { OUString aTmpString(VclResId(SV_PRINT_QUERYFAXNUMBER_TXT)); - QueryString aQuery(NULL, aTmpString, rNumber); - return aQuery.Execute(); + ScopedVclPtrInstance< QueryString > aQuery( nullptr, aTmpString, rNumber ); + return aQuery->Execute(); } } @@ -1071,7 +1079,7 @@ bool PspSalPrinter::StartJob( const OUString* i_pFileName, const OUString& i_rJo std::shared_ptr<vcl::PDFWriter> xWriter; std::vector< PDFPrintFile > aPDFFiles; - std::shared_ptr<Printer> xPrinter(i_rController.getPrinter()); + VclPtr<Printer> xPrinter( i_rController.getPrinter() ); int nAllPages = i_rController.getFilteredPageCount(); i_rController.createProgressDialog(); bool bAborted = false; diff --git a/vcl/generic/print/prtsetup.cxx b/vcl/generic/print/prtsetup.cxx index cbe60c35f3f5..738d00de721a 100644 --- a/vcl/generic/print/prtsetup.cxx +++ b/vcl/generic/print/prtsetup.cxx @@ -93,8 +93,17 @@ RTSDialog::RTSDialog(const PrinterInfo& rJobData, vcl::Window* pParent) RTSDialog::~RTSDialog() { - delete m_pPaperPage; - delete m_pDevicePage; + disposeOnce(); +} + +void RTSDialog::dispose() +{ + m_pTabControl.clear(); + m_pOKButton.clear(); + m_pCancelButton.clear(); + m_pPaperPage.disposeAndClear(); + m_pDevicePage.disposeAndClear(); + TabDialog::dispose(); } IMPL_LINK( RTSDialog, ActivatePage, TabControl*, pTabCtrl ) @@ -108,9 +117,9 @@ IMPL_LINK( RTSDialog, ActivatePage, TabControl*, pTabCtrl ) { TabPage *pPage = NULL; if (sPage == "paper") - pPage = m_pPaperPage = new RTSPaperPage( this ); + pPage = m_pPaperPage = VclPtr<RTSPaperPage>::Create( this ); else if (sPage == "device") - pPage = m_pDevicePage = new RTSDevicePage( this ); + pPage = m_pDevicePage = VclPtr<RTSDevicePage>::Create( this ); if( pPage ) m_pTabControl->SetTabPage( nId, pPage ); } @@ -187,6 +196,20 @@ RTSPaperPage::RTSPaperPage(RTSDialog* pParent) RTSPaperPage::~RTSPaperPage() { + disposeOnce(); +} + +void RTSPaperPage::dispose() +{ + m_pParent.clear(); + m_pPaperText.clear(); + m_pPaperBox.clear(); + m_pOrientBox.clear(); + m_pDuplexText.clear(); + m_pDuplexBox.clear(); + m_pSlotText.clear(); + m_pSlotBox.clear(); + TabPage::dispose(); } void RTSPaperPage::update() @@ -355,6 +378,19 @@ RTSDevicePage::RTSDevicePage( RTSDialog* pParent ) RTSDevicePage::~RTSDevicePage() { + disposeOnce(); +} + +void RTSDevicePage::dispose() +{ + m_pParent.clear(); + m_pPPDKeyBox.clear(); + m_pPPDValueBox.clear(); + m_pCustomEdit.clear(); + m_pLevelBox.clear(); + m_pSpaceBox.clear(); + m_pDepthBox.clear(); + TabPage::dispose(); } sal_uLong RTSDevicePage::getDepth() @@ -466,11 +502,11 @@ void RTSDevicePage::FillValueBox( const PPDKey* pKey ) int SetupPrinterDriver(::psp::PrinterInfo& rJobData) { int nRet = 0; - RTSDialog aDialog( rJobData, NULL ); + ScopedVclPtrInstance< RTSDialog > aDialog( rJobData, nullptr ); - if( aDialog.Execute() ) + if( aDialog->Execute() ) { - rJobData = aDialog.getSetup(); + rJobData = aDialog->getSetup(); nRet = 1; } diff --git a/vcl/generic/print/prtsetup.hxx b/vcl/generic/print/prtsetup.hxx index 6d641bedadf9..67b6cd2216b8 100644 --- a/vcl/generic/print/prtsetup.hxx +++ b/vcl/generic/print/prtsetup.hxx @@ -45,13 +45,13 @@ class RTSDialog : public TabDialog ::psp::PrinterInfo m_aJobData; // controls - TabControl* m_pTabControl; - OKButton* m_pOKButton; - CancelButton* m_pCancelButton; + VclPtr<TabControl> m_pTabControl; + VclPtr<OKButton> m_pOKButton; + VclPtr<CancelButton> m_pCancelButton; // pages - RTSPaperPage* m_pPaperPage; - RTSDevicePage* m_pDevicePage; + VclPtr<RTSPaperPage> m_pPaperPage; + VclPtr<RTSDevicePage> m_pDevicePage; // some resources OUString m_aInvalidString; @@ -64,29 +64,31 @@ class RTSDialog : public TabDialog public: RTSDialog(const ::psp::PrinterInfo& rJobData, vcl::Window* pParent = NULL); virtual ~RTSDialog(); + virtual void dispose() SAL_OVERRIDE; const ::psp::PrinterInfo& getSetup() const { return m_aJobData; } }; class RTSPaperPage : public TabPage { - RTSDialog* m_pParent; + VclPtr<RTSDialog> m_pParent; - FixedText* m_pPaperText; - ListBox* m_pPaperBox; + VclPtr<FixedText> m_pPaperText; + VclPtr<ListBox> m_pPaperBox; - ListBox* m_pOrientBox; + VclPtr<ListBox> m_pOrientBox; - FixedText* m_pDuplexText; - ListBox* m_pDuplexBox; + VclPtr<FixedText> m_pDuplexText; + VclPtr<ListBox> m_pDuplexBox; - FixedText* m_pSlotText; - ListBox* m_pSlotBox; + VclPtr<FixedText> m_pSlotText; + VclPtr<ListBox> m_pSlotBox; DECL_LINK( SelectHdl, ListBox* ); public: RTSPaperPage( RTSDialog* ); virtual ~RTSPaperPage(); + virtual void dispose() SAL_OVERRIDE; void update(); @@ -95,16 +97,16 @@ public: class RTSDevicePage : public TabPage { - RTSDialog* m_pParent; + VclPtr<RTSDialog> m_pParent; - ListBox* m_pPPDKeyBox; - ListBox* m_pPPDValueBox; + VclPtr<ListBox> m_pPPDKeyBox; + VclPtr<ListBox> m_pPPDValueBox; const psp::PPDValue* m_pCustomValue; - Edit* m_pCustomEdit; + VclPtr<Edit> m_pCustomEdit; - ListBox* m_pLevelBox; - ListBox* m_pSpaceBox; - ListBox* m_pDepthBox; + VclPtr<ListBox> m_pLevelBox; + VclPtr<ListBox> m_pSpaceBox; + VclPtr<ListBox> m_pDepthBox; void FillValueBox( const ::psp::PPDKey* ); @@ -113,6 +115,7 @@ class RTSDevicePage : public TabPage public: RTSDevicePage( RTSDialog* ); virtual ~RTSDevicePage(); + virtual void dispose() SAL_OVERRIDE; sal_uLong getLevel(); sal_uLong getPDFDevice(); |