diff options
author | Rafael Dominguez <venccsralph@gmail.com> | 2011-02-18 15:32:32 -0430 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2011-02-22 17:00:28 +0100 |
commit | 2e83e4f2ddd386d57b13310f92b8f93f9fa5a7a5 (patch) | |
tree | 651e7719212994ea4031e161a2a10f6504f04f8c /vcl | |
parent | b81e2789d7d5a20900c79f69c69cd6a7cd4408e8 (diff) |
Update mpItemList from std::vector to boost::ptr_vector.
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/vcl/btndlg.hxx | 7 | ||||
-rw-r--r-- | vcl/source/window/btndlg.cxx | 198 |
2 files changed, 71 insertions, 134 deletions
diff --git a/vcl/inc/vcl/btndlg.hxx b/vcl/inc/vcl/btndlg.hxx index 834dfe23bcd7..a3bfaf55caad 100644 --- a/vcl/inc/vcl/btndlg.hxx +++ b/vcl/inc/vcl/btndlg.hxx @@ -29,16 +29,15 @@ #ifndef _SV_BTNDLG_HXX #define _SV_BTNDLG_HXX +#include <boost/ptr_container/ptr_vector.hpp> + #include <vcl/sv.h> #include <vcl/dllapi.h> #include <vcl/dialog.hxx> -#include <vector> struct ImplBtnDlgItem; class PushButton; -typedef ::std::vector< ImplBtnDlgItem* > ImplBtnDlgItemList; - // ---------------------- // - ButtonDialog-Types - // ---------------------- @@ -58,7 +57,7 @@ typedef ::std::vector< ImplBtnDlgItem* > ImplBtnDlgItemList; class VCL_DLLPUBLIC ButtonDialog : public Dialog { private: - ImplBtnDlgItemList* mpItemList; + boost::ptr_vector<ImplBtnDlgItem> maItemList; Size maPageSize; Size maCtrlSize; long mnButtonSize; diff --git a/vcl/source/window/btndlg.cxx b/vcl/source/window/btndlg.cxx index 50bd18b7a0be..c5f329f11c38 100644 --- a/vcl/source/window/btndlg.cxx +++ b/vcl/source/window/btndlg.cxx @@ -29,46 +29,38 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_vcl.hxx" -#include <tools/ref.hxx> #include <tools/debug.hxx> -#include <vcl/svdata.hxx> +#include <tools/rc.h> #include <vcl/button.hxx> #include <vcl/btndlg.hxx> +#include <vcl/svdata.hxx> -#include <tools/rc.h> - -// ======================================================================= +typedef boost::ptr_vector<ImplBtnDlgItem>::iterator btn_iterator; +typedef boost::ptr_vector<ImplBtnDlgItem>::const_iterator btn_const_iterator; struct ImplBtnDlgItem { USHORT mnId; - BOOL mbOwnButton; - BOOL mbDummyAlign; + bool mbOwnButton; + bool mbDummyAlign; long mnSepSize; PushButton* mpPushButton; }; -// ======================================================================= - void ButtonDialog::ImplInitButtonDialogData() { - mpItemList = new ImplBtnDlgItemList(); mnButtonSize = 0; mnCurButtonId = 0; mnFocusButtonId = BUTTONDIALOG_BUTTON_NOTFOUND; mbFormat = TRUE; } -// ----------------------------------------------------------------------- - ButtonDialog::ButtonDialog( WindowType nType ) : Dialog( nType ) { ImplInitButtonDialogData(); } -// ----------------------------------------------------------------------- - ButtonDialog::ButtonDialog( Window* pParent, WinBits nStyle ) : Dialog( WINDOW_BUTTONDIALOG ) { @@ -76,8 +68,6 @@ ButtonDialog::ButtonDialog( Window* pParent, WinBits nStyle ) : ImplInit( pParent, nStyle ); } -// ----------------------------------------------------------------------- - ButtonDialog::ButtonDialog( Window* pParent, const ResId& rResId ) : Dialog( WINDOW_BUTTONDIALOG ) { @@ -87,22 +77,15 @@ ButtonDialog::ButtonDialog( Window* pParent, const ResId& rResId ) : ImplLoadRes( rResId ); } -// ----------------------------------------------------------------------- - ButtonDialog::~ButtonDialog() { - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) { - ImplBtnDlgItem* pItem = (*mpItemList)[ i ]; - if ( pItem->mpPushButton && pItem->mbOwnButton ) { - delete pItem->mpPushButton; - } - delete pItem; + for ( btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) + { + if ( it->mpPushButton && it->mbOwnButton ) + delete it->mpPushButton; } - delete mpItemList; } -// ----------------------------------------------------------------------- - PushButton* ButtonDialog::ImplCreatePushButton( USHORT nBtnFlags ) { PushButton* pBtn; @@ -125,57 +108,53 @@ PushButton* ButtonDialog::ImplCreatePushButton( USHORT nBtnFlags ) return pBtn; } -// ----------------------------------------------------------------------- - ImplBtnDlgItem* ButtonDialog::ImplGetItem( USHORT nId ) const { - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) { - ImplBtnDlgItem* pItem = (*mpItemList)[ i ]; - if ( pItem->mnId == nId ) { - return pItem; - } + for ( btn_const_iterator it = maItemList.begin(); it != maItemList.end(); ++it) + { + if (it->mnId == nId) + return const_cast<ImplBtnDlgItem*>(&(*it)); } return NULL; } -// ----------------------------------------------------------------------- - long ButtonDialog::ImplGetButtonSize() { if ( !mbFormat ) return mnButtonSize; // Calculate ButtonSize - long nLastSepSize = 0; - long nSepSize = 0; - long nButtonCount = 0; + long nLastSepSize = 0; + long nSepSize = 0; maCtrlSize = Size( IMPL_MINSIZE_BUTTON_WIDTH, IMPL_MINSIZE_BUTTON_HEIGHT ); - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) + for ( btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) { - ImplBtnDlgItem* pItem = (*mpItemList)[ i ]; nSepSize += nLastSepSize; - long nTxtWidth = pItem->mpPushButton->GetCtrlTextWidth( pItem->mpPushButton->GetText() ); + long nTxtWidth = it->mpPushButton->GetCtrlTextWidth(it->mpPushButton->GetText()); nTxtWidth += IMPL_EXTRA_BUTTON_WIDTH; + if ( nTxtWidth > maCtrlSize.Width() ) maCtrlSize.Width() = nTxtWidth; - long nTxtHeight = pItem->mpPushButton->GetTextHeight(); + + long nTxtHeight = it->mpPushButton->GetTextHeight(); nTxtHeight += IMPL_EXTRA_BUTTON_HEIGHT; + if ( nTxtHeight > maCtrlSize.Height() ) maCtrlSize.Height() = nTxtHeight; - nSepSize += pItem->mnSepSize; + nSepSize += it->mnSepSize; if ( GetStyle() & WB_HORZ ) nLastSepSize = IMPL_SEP_BUTTON_X; else nLastSepSize = IMPL_SEP_BUTTON_Y; - - nButtonCount++; } + long nButtonCount = maItemList.size(); + if ( GetStyle() & WB_HORZ ) mnButtonSize = nSepSize + (nButtonCount*maCtrlSize.Width()); else @@ -184,8 +163,6 @@ long ButtonDialog::ImplGetButtonSize() return mnButtonSize; } -// ----------------------------------------------------------------------- - void ButtonDialog::ImplPosControls() { if ( !mbFormat ) @@ -195,7 +172,6 @@ void ButtonDialog::ImplPosControls() ImplGetButtonSize(); // determine dialog size - ImplBtnDlgItem* pItem; Size aDlgSize = maPageSize; long nX; long nY; @@ -229,15 +205,16 @@ void ButtonDialog::ImplPosControls() } // Arrange PushButtons - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) + for ( btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) { - pItem = (*mpItemList)[ i ]; if ( GetStyle() & WB_HORZ ) - nX += pItem->mnSepSize; + nX += it->mnSepSize; else - nY += pItem->mnSepSize; - pItem->mpPushButton->SetPosSizePixel( Point( nX, nY ), maCtrlSize ); - pItem->mpPushButton->Show(); + nY += it->mnSepSize; + + it->mpPushButton->SetPosSizePixel( Point( nX, nY ), maCtrlSize ); + it->mpPushButton->Show(); + if ( GetStyle() & WB_HORZ ) nX += maCtrlSize.Width()+IMPL_SEP_BUTTON_X; else @@ -249,16 +226,13 @@ void ButtonDialog::ImplPosControls() mbFormat = FALSE; } -// ----------------------------------------------------------------------- - IMPL_LINK( ButtonDialog, ImplClickHdl, PushButton*, pBtn ) { - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) + for ( btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) { - ImplBtnDlgItem* pItem = (*mpItemList)[ i ]; - if ( pItem->mpPushButton == pBtn ) + if ( it->mpPushButton == pBtn ) { - mnCurButtonId = pItem->mnId; + mnCurButtonId = it->mnId; Click(); break; } @@ -267,30 +241,26 @@ IMPL_LINK( ButtonDialog, ImplClickHdl, PushButton*, pBtn ) return 0; } -// ----------------------------------------------------------------------- - void ButtonDialog::Resize() { } -// ----------------------------------------------------------------------- - void ButtonDialog::StateChanged( StateChangedType nType ) { if ( nType == STATE_CHANGE_INITSHOW ) { ImplPosControls(); - // Focus evt. auf den entsprechenden Button setzen + // Set focus on default button. if ( mnFocusButtonId != BUTTONDIALOG_BUTTON_NOTFOUND ) { - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) + for ( btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) { - ImplBtnDlgItem* pItem = (*mpItemList)[ i ]; - if ( pItem->mnId == mnFocusButtonId ) + if (it->mnId == mnFocusButtonId ) { - if ( pItem->mpPushButton->IsVisible() ) - pItem->mpPushButton->GrabFocus(); + if (it->mpPushButton->IsVisible()) + it->mpPushButton->GrabFocus(); + break; } } @@ -300,8 +270,6 @@ void ButtonDialog::StateChanged( StateChangedType nType ) Dialog::StateChanged( nType ); } -// ----------------------------------------------------------------------- - void ButtonDialog::Click() { if ( !maClickHdl ) @@ -313,8 +281,6 @@ void ButtonDialog::Click() maClickHdl.Call( this ); } -// ----------------------------------------------------------------------- - void ButtonDialog::AddButton( const XubString& rText, USHORT nId, USHORT nBtnFlags, long nSepPixel ) { @@ -324,11 +290,11 @@ void ButtonDialog::AddButton( const XubString& rText, USHORT nId, pItem->mbOwnButton = TRUE; pItem->mnSepSize = nSepPixel; pItem->mpPushButton = ImplCreatePushButton( nBtnFlags ); + if ( rText.Len() ) pItem->mpPushButton->SetText( rText ); - // In die Liste eintragen - mpItemList->push_back( pItem ); + maItemList.push_back(pItem); if ( nBtnFlags & BUTTONDIALOG_FOCUSBUTTON ) mnFocusButtonId = nId; @@ -336,8 +302,6 @@ void ButtonDialog::AddButton( const XubString& rText, USHORT nId, mbFormat = TRUE; } -// ----------------------------------------------------------------------- - void ButtonDialog::AddButton( StandardButtonType eType, USHORT nId, USHORT nBtnFlags, long nSepPixel ) { @@ -367,14 +331,11 @@ void ButtonDialog::AddButton( StandardButtonType eType, USHORT nId, if ( nBtnFlags & BUTTONDIALOG_FOCUSBUTTON ) mnFocusButtonId = nId; - // In die Liste eintragen - mpItemList->push_back( pItem ); + maItemList.push_back(pItem); mbFormat = TRUE; } -// ----------------------------------------------------------------------- - void ButtonDialog::AddButton( PushButton* pBtn, USHORT nId, USHORT nBtnFlags, long nSepPixel ) { @@ -388,71 +349,60 @@ void ButtonDialog::AddButton( PushButton* pBtn, USHORT nId, if ( nBtnFlags & BUTTONDIALOG_FOCUSBUTTON ) mnFocusButtonId = nId; - // In die View-Liste eintragen - mpItemList->push_back( pItem ); + maItemList.push_back(pItem); mbFormat = TRUE; } -// ----------------------------------------------------------------------- - void ButtonDialog::RemoveButton( USHORT nId ) { - for ( ImplBtnDlgItemList::iterator it = mpItemList->begin(); - it < mpItemList->end(); - ++it - ) { - if ( (*it)->mnId == nId ) { - (*it)->mpPushButton->Hide(); - if ( (*it)->mbOwnButton ) { - delete (*it)->mpPushButton; - } - delete *it; - mpItemList->erase( it ); + btn_iterator it; + for (it = maItemList.begin(); it != maItemList.end(); ++it) + { + if (it->mnId == nId) + { + it->mpPushButton->Hide(); + + if (it->mbOwnButton ) + delete it->mpPushButton; + + maItemList.erase(it); mbFormat = TRUE; break; } } - DBG_ERRORFILE( "ButtonDialog::RemoveButton(): ButtonId invalid" ); + if (it == maItemList.end()) + DBG_ERRORFILE( "ButtonDialog::RemoveButton(): ButtonId invalid" ); } -// ----------------------------------------------------------------------- - void ButtonDialog::Clear() { - for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) { - ImplBtnDlgItem* pItem = (*mpItemList)[ i ]; - pItem->mpPushButton->Hide(); - if ( pItem->mbOwnButton ) { - delete pItem->mpPushButton; - } - delete pItem; + for (btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) + { + it->mpPushButton->Hide(); + + if (it->mbOwnButton ) + delete it->mpPushButton; } - mpItemList->clear(); + maItemList.clear(); mbFormat = TRUE; } -// ----------------------------------------------------------------------- - USHORT ButtonDialog::GetButtonCount() const { - return (USHORT)mpItemList->size(); + return (USHORT)maItemList.size(); } -// ----------------------------------------------------------------------- - USHORT ButtonDialog::GetButtonId( USHORT nButton ) const { - if ( nButton < mpItemList->size() ) - return (USHORT)( (*mpItemList)[ nButton ]->mnId ); + if ( nButton < maItemList.size() ) + return maItemList[nButton].mnId; else return BUTTONDIALOG_BUTTON_NOTFOUND; } -// ----------------------------------------------------------------------- - PushButton* ButtonDialog::GetPushButton( USHORT nId ) const { ImplBtnDlgItem* pItem = ImplGetItem( nId ); @@ -463,8 +413,6 @@ PushButton* ButtonDialog::GetPushButton( USHORT nId ) const return NULL; } -// ----------------------------------------------------------------------- - void ButtonDialog::SetButtonText( USHORT nId, const XubString& rText ) { ImplBtnDlgItem* pItem = ImplGetItem( nId ); @@ -476,8 +424,6 @@ void ButtonDialog::SetButtonText( USHORT nId, const XubString& rText ) } } -// ----------------------------------------------------------------------- - XubString ButtonDialog::GetButtonText( USHORT nId ) const { ImplBtnDlgItem* pItem = ImplGetItem( nId ); @@ -488,8 +434,6 @@ XubString ButtonDialog::GetButtonText( USHORT nId ) const return ImplGetSVEmptyStr(); } -// ----------------------------------------------------------------------- - void ButtonDialog::SetButtonHelpText( USHORT nId, const XubString& rText ) { ImplBtnDlgItem* pItem = ImplGetItem( nId ); @@ -498,8 +442,6 @@ void ButtonDialog::SetButtonHelpText( USHORT nId, const XubString& rText ) pItem->mpPushButton->SetHelpText( rText ); } -// ----------------------------------------------------------------------- - XubString ButtonDialog::GetButtonHelpText( USHORT nId ) const { ImplBtnDlgItem* pItem = ImplGetItem( nId ); @@ -510,8 +452,6 @@ XubString ButtonDialog::GetButtonHelpText( USHORT nId ) const return ImplGetSVEmptyStr(); } -// ----------------------------------------------------------------------- - void ButtonDialog::SetButtonHelpId( USHORT nId, ULONG nHelpId ) { ImplBtnDlgItem* pItem = ImplGetItem( nId ); @@ -520,8 +460,6 @@ void ButtonDialog::SetButtonHelpId( USHORT nId, ULONG nHelpId ) pItem->mpPushButton->SetHelpId( nHelpId ); } -// ----------------------------------------------------------------------- - ULONG ButtonDialog::GetButtonHelpId( USHORT nId ) const { ImplBtnDlgItem* pItem = ImplGetItem( nId ); |