summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-06-12 21:54:57 +0100
committerCaolán McNamara <caolanm@redhat.com>2012-09-28 08:48:27 +0100
commitdc601c038d193f09dfaa6901ef99400eab931221 (patch)
tree9f3cffd26e7ee2f03b963f69b9e59202dc6b605b /sfx2
parent33e12888da78ec9d078b5c497f8c00866b01784f (diff)
dynamically create SfxTabDialog widgets
so we can easily implement creating them vs reusing builder-provided ones.
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/sfx2/tabdlg.hxx42
-rw-r--r--sfx2/source/dialog/tabdlg.cxx169
2 files changed, 111 insertions, 100 deletions
diff --git a/sfx2/inc/sfx2/tabdlg.hxx b/sfx2/inc/sfx2/tabdlg.hxx
index b7d682ddb8b8..a39f25415306 100644
--- a/sfx2/inc/sfx2/tabdlg.hxx
+++ b/sfx2/inc/sfx2/tabdlg.hxx
@@ -65,17 +65,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;
@@ -93,7 +93,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();
@@ -158,7 +158,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
@@ -167,15 +167,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 1adf1202521e..4b4b75bb7113 100644
--- a/sfx2/source/dialog/tabdlg.cxx
+++ b/sfx2/source/dialog/tabdlg.cxx
@@ -137,10 +137,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() );
@@ -384,19 +384,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) \
@@ -428,7 +417,7 @@ SfxTabDialog::SfxTabDialog
, pFrame(pViewFrame)
, INI_LIST(pItemSet)
{
- Init_Impl( bFmt, pUserButtonText );
+ Init_Impl( bFmt, pUserButtonText, rResId );
}
// -----------------------------------------------------------------------
@@ -454,7 +443,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" );
}
@@ -492,15 +481,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]
@@ -508,56 +507,68 @@ 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( SfxResId( STR_RESET ).toString() );
- 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( SfxResId( STR_RESET ).toString() );
+ 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
different behavior than implemented!! */
if ( bFmtFlag )
{
- aBaseFmtBtn.SetText( SfxResId( STR_STANDARD_SHORTCUT ).toString() );
- aBaseFmtBtn.SetClickHdl( LINK( this, SfxTabDialog, BaseFmtHdl ) );
- aBaseFmtBtn.SetHelpId( HID_TABDLG_STANDARD_BTN );
+ m_pBaseFmtBtn->SetText( SfxResId( STR_STANDARD_SHORTCUT ).toString() );
+ 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;
}
@@ -568,17 +579,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;
}
@@ -586,7 +597,7 @@ void SfxTabDialog::RemoveResetButton()
short SfxTabDialog::Execute()
{
- if ( !aTabCtrl.GetPageCount() )
+ if ( !m_pTabCtrl->GetPageCount() )
return RET_CANCEL;
Start_Impl();
return TabDialog::Execute();
@@ -596,7 +607,7 @@ short SfxTabDialog::Execute()
void SfxTabDialog::StartExecuteModal( const Link& rEndDialogHdl )
{
- if ( !aTabCtrl.GetPageCount() )
+ if ( !m_pTabCtrl->GetPageCount() )
return;
Start_Impl();
TabDialog::StartExecuteModal( rEndDialogHdl );
@@ -635,8 +646,8 @@ 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->SetText( SfxResId( STR_APPLY ).toString() );
+ pImpl->pApplyButton->SetZOrder(m_pOKBtn, WINDOW_ZORDER_BEHIND);
+ pImpl->pApplyButton->SetText(SfxResId( STR_APPLY ).toString());
pImpl->pApplyButton->Show();
pImpl->pApplyButton->SetHelpId( HID_TABDLG_APPLY_BTN );
@@ -667,20 +678,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 ) );
@@ -700,14 +711,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 )
@@ -771,9 +782,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 ) );
}
@@ -798,9 +809,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 ) );
}
@@ -817,7 +828,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 )
@@ -1048,8 +1059,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 )
@@ -1118,7 +1129,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" );
@@ -1145,7 +1156,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;
@@ -1289,7 +1300,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;
}
@@ -1389,8 +1400,8 @@ void SfxTabDialog::ShowPage( sal_uInt16 nId )
*/
{
- aTabCtrl.SetCurPageId( nId );
- ActivatePageHdl( &aTabCtrl );
+ m_pTabCtrl->SetCurPageId( nId );
+ ActivatePageHdl( m_pTabCtrl );
}
// -----------------------------------------------------------------------