summaryrefslogtreecommitdiff
path: root/reportdesign/source/ui/dlg/Condition.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'reportdesign/source/ui/dlg/Condition.cxx')
-rw-r--r--reportdesign/source/ui/dlg/Condition.cxx75
1 files changed, 53 insertions, 22 deletions
diff --git a/reportdesign/source/ui/dlg/Condition.cxx b/reportdesign/source/ui/dlg/Condition.cxx
index 26e5989dce07..1ef8d1e7bf90 100644
--- a/reportdesign/source/ui/dlg/Condition.cxx
+++ b/reportdesign/source/ui/dlg/Condition.cxx
@@ -97,11 +97,13 @@ IMPL_LINK( ConditionField, OnFormula, Button*, _pClickedButton )
class OColorPopup : public FloatingWindow
{
DECL_LINK( SelectHdl, void * );
- Condition* m_pCondition;
+ VclPtr<Condition> m_pCondition;
sal_uInt16 m_nSlotId;
public:
OColorPopup(vcl::Window* _pParent,Condition* _pCondition);
- ValueSet m_aColorSet;
+ virtual ~OColorPopup();
+ virtual void dispose() SAL_OVERRIDE;
+ VclPtr<ValueSet> m_aColorSet;
virtual void KeyInput( const KeyEvent& rKEvt ) SAL_OVERRIDE;
virtual void Resize() SAL_OVERRIDE;
@@ -114,9 +116,9 @@ OColorPopup::OColorPopup(vcl::Window* _pParent,Condition* _pCondition)
:FloatingWindow(_pParent, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK|WB_DIALOGCONTROL ))
,m_pCondition(_pCondition)
,m_nSlotId(0)
-,m_aColorSet( this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT) )
+,m_aColorSet( VclPtr<ValueSet>::Create(this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT)) )
{
- m_aColorSet.SetHelpId( HID_RPT_POPUP_COLOR_CTRL );
+ m_aColorSet->SetHelpId( HID_RPT_POPUP_COLOR_CTRL );
SetHelpId( HID_RPT_POPUP_COLOR );
const Size aSize12( 13, 13 );
short i = 0;
@@ -127,34 +129,47 @@ OColorPopup::OColorPopup(vcl::Window* _pParent,Condition* _pCondition)
if ( nCount > PALETTE_SIZE )
// Show scrollbar if more than PALLETTE_SIZE colors are available
- m_aColorSet.SetStyle( m_aColorSet.GetStyle() | WB_VSCROLL );
+ m_aColorSet->SetStyle( m_aColorSet->GetStyle() | WB_VSCROLL );
for ( i = 0; i < nCount; i++ )
{
XColorEntry* pEntry = pColorList->GetColor(i);
- m_aColorSet.InsertItem( i+1, pEntry->GetColor(), pEntry->GetName() );
+ m_aColorSet->InsertItem( i+1, pEntry->GetColor(), pEntry->GetName() );
}
while ( i < PALETTE_SIZE )
{
// fill empty elements if less then PALLETTE_SIZE colors are available
- m_aColorSet.InsertItem( i+1, aColWhite, aStrWhite );
+ m_aColorSet->InsertItem( i+1, aColWhite, aStrWhite );
i++;
}
- m_aColorSet.SetSelectHdl( LINK( this, OColorPopup, SelectHdl ) );
- m_aColorSet.SetColCount( PALETTE_X );
- m_aColorSet.SetLineCount( PALETTE_Y );
- Size aSize = m_aColorSet.CalcWindowSizePixel( aSize12 );
+ m_aColorSet->SetSelectHdl( LINK( this, OColorPopup, SelectHdl ) );
+ m_aColorSet->SetColCount( PALETTE_X );
+ m_aColorSet->SetLineCount( PALETTE_Y );
+ Size aSize = m_aColorSet->CalcWindowSizePixel( aSize12 );
aSize.Width() += 4;
aSize.Height() += 4;
SetOutputSizePixel( aSize );
- m_aColorSet.Show();
+ m_aColorSet->Show();
+}
+
+OColorPopup::~OColorPopup()
+{
+ disposeOnce();
+}
+
+void OColorPopup::dispose()
+{
+ disposeBuilder();
+ m_aColorSet.clear();
+ m_pCondition.clear();
+ FloatingWindow::dispose();
}
void OColorPopup::KeyInput( const KeyEvent& rKEvt )
{
- m_aColorSet.KeyInput(rKEvt);
+ m_aColorSet->KeyInput(rKEvt);
}
void OColorPopup::Resize()
@@ -162,12 +177,12 @@ void OColorPopup::Resize()
Size aSize = GetOutputSizePixel();
aSize.Width() -= 4;
aSize.Height() -= 4;
- m_aColorSet.SetPosSizePixel( Point(2,2), aSize );
+ m_aColorSet->SetPosSizePixel( Point(2,2), aSize );
}
void OColorPopup::StartSelection()
{
- m_aColorSet.StartSelection();
+ m_aColorSet->StartSelection();
}
void OColorPopup::SetSlotId(sal_uInt16 _nSlotId)
@@ -175,20 +190,20 @@ void OColorPopup::SetSlotId(sal_uInt16 _nSlotId)
m_nSlotId = _nSlotId;
if ( SID_ATTR_CHAR_COLOR_BACKGROUND == _nSlotId || SID_BACKGROUND_COLOR == _nSlotId )
{
- m_aColorSet.SetStyle( m_aColorSet.GetStyle() | WB_NONEFIELD );
- m_aColorSet.SetText( OUString(ModuleRes( STR_TRANSPARENT )) );
+ m_aColorSet->SetStyle( m_aColorSet->GetStyle() | WB_NONEFIELD );
+ m_aColorSet->SetText( OUString(ModuleRes( STR_TRANSPARENT )) );
}
}
IMPL_LINK_NOARG(OColorPopup, SelectHdl)
{
- sal_uInt16 nItemId = m_aColorSet.GetSelectItemId();
- Color aColor( nItemId == 0 ? Color( COL_TRANSPARENT ) : m_aColorSet.GetItemColor( nItemId ) );
+ sal_uInt16 nItemId = m_aColorSet->GetSelectItemId();
+ Color aColor( nItemId == 0 ? Color( COL_TRANSPARENT ) : m_aColorSet->GetItemColor( nItemId ) );
/* #i33380# Moved the following line above the Dispatch() calls.
This instance may be deleted in the meantime (i.e. when a dialog is opened
while in Dispatch()), accessing members will crash in this case. */
- m_aColorSet.SetNoSelection();
+ m_aColorSet->SetNoSelection();
if ( IsInPopupMode() )
EndPopupMode();
@@ -294,20 +309,36 @@ sal_uInt16 Condition::mapToolbarItemToSlotId(sal_uInt16 nItemId) const
Condition::~Condition()
{
+ disposeOnce();
+}
+
+void Condition::dispose()
+{
m_bInDestruction = true;
- delete m_pColorFloat;
delete m_pBtnUpdaterFontColor;
delete m_pCondLHS;
delete m_pCondRHS;
delete m_pBtnUpdaterBackgroundColor;
+ m_pHeader.clear();
+ m_pConditionType.clear();
+ m_pOperationList.clear();
+ m_pOperandGlue.clear();
+ m_pActions.clear();
+ m_pPreview.clear();
+ m_pMoveUp.clear();
+ m_pMoveDown.clear();
+ m_pAddCondition.clear();
+ m_pRemoveCondition.clear();
+ m_pColorFloat.disposeAndClear();
+ VclHBox::dispose();
}
IMPL_LINK( Condition, DropdownClick, ToolBox*, /*pToolBar*/ )
{
sal_uInt16 nId( m_pActions->GetCurItemId() );
if ( !m_pColorFloat )
- m_pColorFloat = new OColorPopup(m_pActions,this);
+ m_pColorFloat = VclPtr<OColorPopup>::Create(m_pActions,this);
sal_uInt16 nTextId = 0;
if (nId == m_nFontColorId)