sfx2/inc/sfx2/tabdlg.hxx | 42 +++++----- sfx2/source/dialog/tabdlg.cxx | 169 ++++++++++++++++++++++-------------------- 2 files changed, 111 insertions(+), 100 deletions(-)
New commits: commit ce76e4befd731e047698c80409be28cea8b13bd5 Author: Caolán McNamara <caol...@redhat.com> Date: Tue Jun 12 21:54:57 2012 +0100 dynamically create SfxTabDialog widgets so we can easily implement creating them vs reusing builder-provided ones. diff --git a/sfx2/inc/sfx2/tabdlg.hxx b/sfx2/inc/sfx2/tabdlg.hxx index 324e9d7..520757c 100644 --- a/sfx2/inc/sfx2/tabdlg.hxx +++ b/sfx2/inc/sfx2/tabdlg.hxx @@ -75,17 +75,17 @@ friend class SfxTabDialogController; SfxViewFrame* pFrame; - VclVBox vbox; - VclVBox content_area; - TabControl aTabCtrl; - - VclHButtonBox action_area; - OKButton aOKBtn; - PushButton* pUserBtn; - CancelButton aCancelBtn; - HelpButton aHelpBtn; - PushButton aResetBtn; - PushButton aBaseFmtBtn; + VclVBox *m_pVBox; + VclVBox *m_pContentArea; + TabControl *m_pTabCtrl; + + VclHButtonBox *m_pActionArea; + OKButton *m_pOKBtn; + PushButton* m_pUserBtn; + CancelButton* m_pCancelBtn; + HelpButton* m_pHelpBtn; + PushButton* m_pResetBtn; + PushButton* m_pBaseFmtBtn; const SfxItemSet* pSet; SfxItemSet* pOutSet; @@ -103,7 +103,7 @@ friend class SfxTabDialogController; DECL_DLLPRIVATE_LINK(BaseFmtHdl, void *); DECL_DLLPRIVATE_LINK(UserHdl, void *); DECL_DLLPRIVATE_LINK(CancelHdl, void *); - SAL_DLLPRIVATE void Init_Impl(sal_Bool, const String *); + SAL_DLLPRIVATE void Init_Impl( sal_Bool bFmtFlag, const String* pUserButtonText, const ResId& rResId ); protected: virtual short Ok(); @@ -164,7 +164,7 @@ public: void SetCurPageId( sal_uInt16 nId ) { nAppPageId = nId; } sal_uInt16 GetCurPageId() const - { return aTabCtrl.GetCurPageId(); } + { return m_pTabCtrl->GetCurPageId(); } void ShowPage( sal_uInt16 nId ); // may provide local slots converted by Map @@ -173,15 +173,15 @@ public: const SfxItemSet* GetOutputItemSet() const { return pOutSet; } sal_Bool IsFormat() const { return bFmt; } - const OKButton& GetOKButton() const { return aOKBtn; } - OKButton& GetOKButton() { return aOKBtn; } - const CancelButton& GetCancelButton() const { return aCancelBtn; } - CancelButton& GetCancelButton() { return aCancelBtn; } - const HelpButton& GetHelpButton() const { return aHelpBtn; } - HelpButton& GetHelpButton() { return aHelpBtn; } + const OKButton& GetOKButton() const { return *m_pOKBtn; } + OKButton& GetOKButton() { return *m_pOKBtn; } + const CancelButton& GetCancelButton() const { return *m_pCancelBtn; } + CancelButton& GetCancelButton() { return *m_pCancelBtn; } + const HelpButton& GetHelpButton() const { return *m_pHelpBtn; } + HelpButton& GetHelpButton() { return *m_pHelpBtn; } - const PushButton* GetUserButton() const { return pUserBtn; } - PushButton* GetUserButton() { return pUserBtn; } + const PushButton* GetUserButton() const { return m_pUserBtn; } + PushButton* GetUserButton() { return m_pUserBtn; } void RemoveResetButton(); short Execute(); diff --git a/sfx2/source/dialog/tabdlg.cxx b/sfx2/source/dialog/tabdlg.cxx index 33cb57f..f2eb399 100644 --- a/sfx2/source/dialog/tabdlg.cxx +++ b/sfx2/source/dialog/tabdlg.cxx @@ -146,10 +146,10 @@ void SfxTabDialogController::StateChanged( sal_uInt16 /*nSID*/, SfxItemState /*e { pSet = pDialog->pSet = pSetItem->GetItemSet().Clone(); sal_Bool bDialogStarted = sal_False; - for ( sal_uInt16 n=0; n<pDialog->aTabCtrl.GetPageCount(); n++ ) + for ( sal_uInt16 n=0; n<pDialog->m_pTabCtrl->GetPageCount(); n++ ) { - sal_uInt16 nPageId = pDialog->aTabCtrl.GetPageId( n ); - SfxTabPage* pTabPage = dynamic_cast<SfxTabPage*> (pDialog->aTabCtrl.GetTabPage( nPageId )); + sal_uInt16 nPageId = pDialog->m_pTabCtrl->GetPageId( n ); + SfxTabPage* pTabPage = dynamic_cast<SfxTabPage*> (pDialog->m_pTabCtrl->GetTabPage( nPageId )); if ( pTabPage ) { pTabPage->Reset( pSetItem->GetItemSet() ); @@ -393,19 +393,8 @@ void SfxTabPage::AddItemConnection( sfx::ItemConnectionBase* pConnection ) } #define INI_LIST(ItemSetPtr) \ - vbox(this, false, 7) \ - , content_area(&vbox) \ - , aTabCtrl(&content_area, ResId(ID_TABCONTROL,*rResId.GetResMgr())) \ - , action_area(&vbox) \ - , aOKBtn(&action_area) \ - , pUserBtn(pUserButtonText? new PushButton(&action_area): 0) \ - , aCancelBtn(&action_area) \ - , aHelpBtn(&action_area) \ - , aResetBtn(&action_area) \ - , aBaseFmtBtn(&action_area) \ - , pSet(ItemSetPtr) \ + pSet(ItemSetPtr) \ , pOutSet(0) \ - , pImpl(new TabDlg_Impl( (sal_uInt8)aTabCtrl.GetPageCount() )) \ , pRanges(0) \ , nResId(rResId.GetId()) \ , nAppPageId(USHRT_MAX) \ @@ -437,7 +426,7 @@ SfxTabDialog::SfxTabDialog , pFrame(pViewFrame) , INI_LIST(pItemSet) { - Init_Impl( bFmt, pUserButtonText ); + Init_Impl( bFmt, pUserButtonText, rResId ); } // ----------------------------------------------------------------------- @@ -463,7 +452,7 @@ SfxTabDialog::SfxTabDialog , pFrame(0) , INI_LIST(pItemSet) { - Init_Impl( bFmt, pUserButtonText ); + Init_Impl( bFmt, pUserButtonText, rResId ); DBG_WARNING( "Please use the Construtor with the ViewFrame" ); } @@ -474,7 +463,7 @@ SfxTabDialog::~SfxTabDialog() // save settings (screen position and current page) SvtViewOptions aDlgOpt( E_TABDIALOG, String::CreateFromInt32( nResId ) ); aDlgOpt.SetWindowState(OStringToOUString(GetWindowState(WINDOWSTATE_MASK_POS),RTL_TEXTENCODING_ASCII_US)); - aDlgOpt.SetPageID( aTabCtrl.GetCurPageId() ); + aDlgOpt.SetPageID( m_pTabCtrl->GetCurPageId() ); const sal_uInt16 nCount = pImpl->pData->Count(); for ( sal_uInt16 i = 0; i < nCount; ++i ) @@ -504,15 +493,25 @@ SfxTabDialog::~SfxTabDialog() delete pImpl->pApplyButton; delete pImpl->pData; delete pImpl; - delete pUserBtn; delete pOutSet; delete pExampleSet; delete [] pRanges; + + delete m_pBaseFmtBtn; + delete m_pResetBtn; + delete m_pHelpBtn; + delete m_pCancelBtn; + delete m_pUserBtn; + delete m_pOKBtn; + delete m_pActionArea; + delete m_pTabCtrl; + delete m_pContentArea; + delete m_pVBox; } // ----------------------------------------------------------------------- -void SfxTabDialog::Init_Impl( sal_Bool bFmtFlag, const String* pUserButtonText ) +void SfxTabDialog::Init_Impl( sal_Bool bFmtFlag, const String* pUserButtonText, const ResId& rResId ) /* [Description] @@ -520,40 +519,52 @@ void SfxTabDialog::Init_Impl( sal_Bool bFmtFlag, const String* pUserButtonText ) */ { + m_pVBox = new VclVBox(this, false, 7); + m_pContentArea = new VclVBox(m_pVBox); + m_pTabCtrl = new TabControl(m_pContentArea, ResId(ID_TABCONTROL, *rResId.GetResMgr())); + m_pActionArea = new VclHButtonBox(m_pVBox); + m_pOKBtn = new OKButton(m_pActionArea); + m_pUserBtn = pUserButtonText ? new PushButton(m_pActionArea) : 0; + m_pCancelBtn = new CancelButton(m_pActionArea); + m_pHelpBtn = new HelpButton(m_pActionArea); + m_pResetBtn = new PushButton(m_pActionArea); + m_pBaseFmtBtn = new PushButton(m_pActionArea); + pImpl = new TabDlg_Impl(m_pTabCtrl->GetPageCount()); + rtl::OString sFill(RTL_CONSTASCII_STRINGPARAM("fill")); rtl::OString sExpand(RTL_CONSTASCII_STRINGPARAM("expand")); rtl::OString sPackType(RTL_CONSTASCII_STRINGPARAM("pack-type")); - vbox.setChildProperty(sFill, true); + m_pVBox->setChildProperty(sFill, true); - action_area.setChildProperty(sFill, true); + m_pActionArea->setChildProperty(sFill, true); - content_area.setChildProperty(sFill, true); - content_area.setChildProperty(sExpand, true); + m_pContentArea->setChildProperty(sFill, true); + m_pContentArea->setChildProperty(sExpand, true); - aTabCtrl.setChildProperty(sFill, true); - aTabCtrl.setChildProperty(sExpand, true); + m_pTabCtrl->setChildProperty(sFill, true); + m_pTabCtrl->setChildProperty(sExpand, true); - aOKBtn.SetClickHdl( LINK( this, SfxTabDialog, OkHdl ) ); - aCancelBtn.SetClickHdl( LINK( this, SfxTabDialog, CancelHdl ) ); - aResetBtn.SetClickHdl( LINK( this, SfxTabDialog, ResetHdl ) ); - aResetBtn.SetText( String( SfxResId( STR_RESET ) ) ); - aTabCtrl.SetActivatePageHdl( + m_pOKBtn->SetClickHdl( LINK( this, SfxTabDialog, OkHdl ) ); + m_pCancelBtn->SetClickHdl( LINK( this, SfxTabDialog, CancelHdl ) ); + m_pResetBtn->SetClickHdl( LINK( this, SfxTabDialog, ResetHdl ) ); + m_pResetBtn->SetText( String( SfxResId( STR_RESET ) ) ); + m_pTabCtrl->SetActivatePageHdl( LINK( this, SfxTabDialog, ActivatePageHdl ) ); - aTabCtrl.SetDeactivatePageHdl( + m_pTabCtrl->SetDeactivatePageHdl( LINK( this, SfxTabDialog, DeactivatePageHdl ) ); - aTabCtrl.Show(); - aOKBtn.Show(); - aCancelBtn.Show(); - aHelpBtn.Show(); - aResetBtn.Show(); - aResetBtn.SetHelpId( HID_TABDLG_RESET_BTN ); - - if ( pUserBtn ) + m_pTabCtrl->Show(); + m_pOKBtn->Show(); + m_pCancelBtn->Show(); + m_pHelpBtn->Show(); + m_pResetBtn->Show(); + m_pResetBtn->SetHelpId( HID_TABDLG_RESET_BTN ); + + if ( m_pUserBtn ) { - pUserBtn->SetText( *pUserButtonText ); - pUserBtn->SetClickHdl( LINK( this, SfxTabDialog, UserHdl ) ); - pUserBtn->Show(); + m_pUserBtn->SetText( *pUserButtonText ); + m_pUserBtn->SetClickHdl( LINK( this, SfxTabDialog, UserHdl ) ); + m_pUserBtn->Show(); } /* TODO: Check what is up with bFmt/bFmtFlag. Comment below suggests a @@ -561,16 +572,16 @@ void SfxTabDialog::Init_Impl( sal_Bool bFmtFlag, const String* pUserButtonText ) if ( bFmtFlag ) { String aStd( SfxResId( STR_STANDARD_SHORTCUT ) ); - aBaseFmtBtn.SetText( aStd ); - aBaseFmtBtn.SetClickHdl( LINK( this, SfxTabDialog, BaseFmtHdl ) ); - aBaseFmtBtn.SetHelpId( HID_TABDLG_STANDARD_BTN ); + m_pBaseFmtBtn->SetText( aStd ); + m_pBaseFmtBtn->SetClickHdl( LINK( this, SfxTabDialog, BaseFmtHdl ) ); + m_pBaseFmtBtn->SetHelpId( HID_TABDLG_STANDARD_BTN ); // bFmt = temporary Flag passed on in the Constructor(), // if bFmt == 2, then also sal_True, // additional suppression of the standard button, // after the Initializing set to sal_True again if ( bFmtFlag != 2 ) - aBaseFmtBtn.Show(); + m_pBaseFmtBtn->Show(); else bFmtFlag = sal_True; } @@ -581,17 +592,17 @@ void SfxTabDialog::Init_Impl( sal_Bool bFmtFlag, const String* pUserButtonText ) pOutSet = new SfxItemSet( *pSet->GetPool(), pSet->GetRanges() ); } - aOKBtn.SetAccessibleRelationMemberOf( &aOKBtn ); - aCancelBtn.SetAccessibleRelationMemberOf( &aCancelBtn ); - aHelpBtn.SetAccessibleRelationMemberOf( &aHelpBtn ); - aResetBtn.SetAccessibleRelationMemberOf( &aResetBtn ); + m_pOKBtn->SetAccessibleRelationMemberOf( m_pOKBtn ); + m_pCancelBtn->SetAccessibleRelationMemberOf( m_pCancelBtn ); + m_pHelpBtn->SetAccessibleRelationMemberOf( m_pHelpBtn ); + m_pResetBtn->SetAccessibleRelationMemberOf( m_pResetBtn ); } // ----------------------------------------------------------------------- void SfxTabDialog::RemoveResetButton() { - aResetBtn.Hide(); + m_pResetBtn->Hide(); pImpl->bHideResetBtn = sal_True; } @@ -599,7 +610,7 @@ void SfxTabDialog::RemoveResetButton() short SfxTabDialog::Execute() { - if ( !aTabCtrl.GetPageCount() ) + if ( !m_pTabCtrl->GetPageCount() ) return RET_CANCEL; Start_Impl(); return TabDialog::Execute(); @@ -609,7 +620,7 @@ short SfxTabDialog::Execute() void SfxTabDialog::StartExecuteModal( const Link& rEndDialogHdl ) { - if ( !aTabCtrl.GetPageCount() ) + if ( !m_pTabCtrl->GetPageCount() ) return; Start_Impl(); TabDialog::StartExecuteModal( rEndDialogHdl ); @@ -648,7 +659,7 @@ void SfxTabDialog::EnableApplyButton(sal_Bool bEnable) { pImpl->pApplyButton = new PushButton( this ); // in the z-order, the apply button should be behind the ok button, thus appearing at the right side of it - pImpl->pApplyButton->SetZOrder(&aOKBtn, WINDOW_ZORDER_BEHIND); + pImpl->pApplyButton->SetZOrder(m_pOKBtn, WINDOW_ZORDER_BEHIND); pImpl->pApplyButton->SetText( String( SfxResId( STR_APPLY ) ) ); pImpl->pApplyButton->Show(); @@ -680,20 +691,20 @@ void SfxTabDialog::Start_Impl() //exist to get overall optimal size for dialog if (isLayoutEnabled()) { - for ( sal_uInt16 n=0; n < aTabCtrl.GetPageCount(); ++n) + for ( sal_uInt16 n=0; n < m_pTabCtrl->GetPageCount(); ++n) { - sal_uInt16 nPageId = aTabCtrl.GetPageId(n); - TabPage* pTabPage = aTabCtrl.GetTabPage(nPageId); + sal_uInt16 nPageId = m_pTabCtrl->GetPageId(n); + TabPage* pTabPage = m_pTabCtrl->GetTabPage(nPageId); if (!pTabPage) { - aTabCtrl.SetCurPageId(nPageId); - ActivatePageHdl(&aTabCtrl); + m_pTabCtrl->SetCurPageId(nPageId); + ActivatePageHdl(m_pTabCtrl); } } } - DBG_ASSERT( pImpl->pData->Count() == aTabCtrl.GetPageCount(), "not all pages registered" ); - sal_uInt16 nActPage = aTabCtrl.GetPageId( 0 ); + DBG_ASSERT( pImpl->pData->Count() == m_pTabCtrl->GetPageCount(), "not all pages registered" ); + sal_uInt16 nActPage = m_pTabCtrl->GetPageId( 0 ); // load old settings, when exists SvtViewOptions aDlgOpt( E_TABDIALOG, String::CreateFromInt32( nResId ) ); @@ -713,14 +724,14 @@ void SfxTabDialog::Start_Impl() nActPage = nAutoTabPageId; } - if ( TAB_PAGE_NOTFOUND == aTabCtrl.GetPagePos( nActPage ) ) - nActPage = aTabCtrl.GetPageId( 0 ); + if ( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nActPage ) ) + nActPage = m_pTabCtrl->GetPageId( 0 ); } - else if ( USHRT_MAX != nAppPageId && TAB_PAGE_NOTFOUND != aTabCtrl.GetPagePos( nAppPageId ) ) + else if ( USHRT_MAX != nAppPageId && TAB_PAGE_NOTFOUND != m_pTabCtrl->GetPagePos( nAppPageId ) ) nActPage = nAppPageId; - aTabCtrl.SetCurPageId( nActPage ); - ActivatePageHdl( &aTabCtrl ); + m_pTabCtrl->SetCurPageId( nActPage ); + ActivatePageHdl( m_pTabCtrl ); } void SfxTabDialog::AddTabPage( sal_uInt16 nId, sal_Bool bItemsOnDemand ) @@ -784,9 +795,9 @@ void SfxTabDialog::AddTabPage sal_uInt16 nPos ) { - DBG_ASSERT( TAB_PAGE_NOTFOUND == aTabCtrl.GetPagePos( nId ), + DBG_ASSERT( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nId ), "Double Page-Ids in the Tabpage" ); - aTabCtrl.InsertPage( nId, rRiderText, nPos ); + m_pTabCtrl->InsertPage( nId, rRiderText, nPos ); pImpl->pData->Append( new Data_Impl( nId, pCreateFunc, pRangesFunc, bItemsOnDemand ) ); } @@ -811,9 +822,9 @@ void SfxTabDialog::AddTabPage sal_uInt16 nPos ) { - DBG_ASSERT( TAB_PAGE_NOTFOUND == aTabCtrl.GetPagePos( nId ), + DBG_ASSERT( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nId ), "Duplicate Page-Ids in the Tabpage" ); - aTabCtrl.InsertPage( nId, rRiderBitmap, nPos ); + m_pTabCtrl->InsertPage( nId, rRiderBitmap, nPos ); pImpl->pData->Append( new Data_Impl( nId, pCreateFunc, pRangesFunc, bItemsOnDemand ) ); } @@ -830,7 +841,7 @@ void SfxTabDialog::RemoveTabPage( sal_uInt16 nId ) { sal_uInt16 nPos = 0; - aTabCtrl.RemovePage( nId ); + m_pTabCtrl->RemovePage( nId ); Data_Impl* pDataObject = Find( *pImpl->pData, nId, &nPos ); if ( pDataObject ) @@ -1047,8 +1058,8 @@ IMPL_LINK_NOARG(SfxTabDialog, OkHdl) bool SfxTabDialog::PrepareLeaveCurrentPage() { - sal_uInt16 const nId = aTabCtrl.GetCurPageId(); - SfxTabPage* pPage = dynamic_cast<SfxTabPage*> (aTabCtrl.GetTabPage( nId )); + sal_uInt16 const nId = m_pTabCtrl->GetCurPageId(); + SfxTabPage* pPage = dynamic_cast<SfxTabPage*> (m_pTabCtrl->GetTabPage( nId )); bool bEnd = !pPage; if ( pPage ) @@ -1117,7 +1128,7 @@ IMPL_LINK_NOARG(SfxTabDialog, ResetHdl) */ { - const sal_uInt16 nId = aTabCtrl.GetCurPageId(); + const sal_uInt16 nId = m_pTabCtrl->GetCurPageId(); Data_Impl* pDataObject = Find( *pImpl->pData, nId ); DBG_ASSERT( pDataObject, "Id not known" ); @@ -1144,7 +1155,7 @@ IMPL_LINK_NOARG(SfxTabDialog, BaseFmtHdl) */ { - const sal_uInt16 nId = aTabCtrl.GetCurPageId(); + const sal_uInt16 nId = m_pTabCtrl->GetCurPageId(); Data_Impl* pDataObject = Find( *pImpl->pData, nId ); DBG_ASSERT( pDataObject, "Id not known" ); bFmt = 2; @@ -1288,7 +1299,7 @@ IMPL_LINK( SfxTabDialog, ActivatePageHdl, TabControl *, pTabCtrl ) if ( pExampleSet ) pTabPage->ActivatePage( *pExampleSet ); sal_Bool bReadOnly = pTabPage->IsReadOnly(); - ( bReadOnly || pImpl->bHideResetBtn ) ? aResetBtn.Hide() : aResetBtn.Show(); + ( bReadOnly || pImpl->bHideResetBtn ) ? m_pResetBtn->Hide() : m_pResetBtn->Show(); return 0; } @@ -1388,8 +1399,8 @@ void SfxTabDialog::ShowPage( sal_uInt16 nId ) */ { - aTabCtrl.SetCurPageId( nId ); - ActivatePageHdl( &aTabCtrl ); + m_pTabCtrl->SetCurPageId( nId ); + ActivatePageHdl( m_pTabCtrl ); } // -----------------------------------------------------------------------
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits